您当前的位置:首页 > 电脑百科 > 程序开发 > 架构

分布式架构入门:一文轻松搞懂晦涩的CAP理论!

时间:2023-08-09 16:16:41  来源:  作者:IT168企业级

对于设计分布式系统的架构师来说, CAP 是必须掌握的理论。

CAP 定理( CAP theorem )又被称作布鲁尔定理( Brewer’s theorem),由加州大学伯克利分校(计算机领域神一样的大学)的计算机科学家埃里克·布鲁尔在 2000 年的 ACM PODC 上提出的一个猜想。2002 年,麻省理工学院(另一所计算机领域神一样的大学〉的赛斯·吉尔伯特和南希 ·林奇发表了布鲁尔猜想的证明 , 使之成为分布式计算领域公认的一个定理。

在我刚接触大数据平台的时候,第一次听到了CAP的理论,然后公司的架构师说hadoop属于CP系统(Consistency and Partition tolerance),不明觉厉。后来虽然我大致知道了CAP是什么意思,但也是一知半解,比如我并不清楚CAP的适用范围是什么,系统、数据还是应用?

最近看到了李云华的一本书:《从零开始学架构》,再一次接触到了CAP理论,这本书对于CAP的诠释还是比较通俗易懂的,在这本书的帮助下,再加上有ChatGPT的加持,自己终于对CAP理论有了全新的认识,现在再去理解分布式架构就有一览众山小的感觉,在此把我的领悟分享给大家。

一、CAP理论的缘起

在分布式系统的设计重点需要解决两个问题:横向扩展和高可用性,横向扩展是为了解决单点性能瓶颈问题,从而保证可用性,高可用是为了解决单点故障问题,进而保障部分节点故障时的可用性,由此可以看到,分布式系统的核心诉求就是可用性。这个可用性正是CAP中的A;用户访问系统时,可以在合理的时间内得到合理的响应。

为了保证可用性,一个分布式系统通常由多个节点组成,这些节点各自维护一份数据,但是不管用户访问哪个节点,原则上都应该读取到相同的数据。为了达到这个效果,一个节点收到写入请求更新自己的数据后,必须将数据同步到其他节点,以保证各个节点的数据一致性,这个一致性正是CAP中的C:用户访问系统时,可以读取到最近写入的数据。

分布式系统中,节点之间数据的同步是基于网络的,由于网络本身的不可靠性,极端情况下会出现网络不可用,从而将网络两端的节点孤立开来,这就是网络分区的现象。发生网络分区时,系统中多个节点数据一定是不一致的,但可以选择对用户表现出一致性,代价是牺牲可用性,将未能同步到新数据的部分节点设置为不可用,当然也可以选择可用性,此时系统中各个节点都是可用的,只是返回给用户的数据不一致,这里的选择,就是CAP中的P。

以上就是CAP理论的背景,大家可以知其所以然。

二、CAP定义的辨析

有比较才有鉴别,CAP理论的定义有很多版本,通过比对这些版本的差异,让我对CAP有了更深入的理解,这里挑选了了2个典型版本:

版本1:

对于一个分布式计算系统,不可能同时满足一致性( Consistence)、可用性(AvAIlability)、分区容错性( Partition Tolerance)三个设计约束。

一致性(Consistence):所有节点在同一时刻都能看到相同的数据。

可用性(Availability):每个请求都能得到成功或失败的响应。

分区容错性( Partition Tolerance):尽管出现消息丢失或分区错误,但系统能够继续运行。

版本2:

在一个分布式系统 (指互相连接并共享数据的节点的集合)中,当涉及读写操作时,只能保证一致性( Consistence)、可用性( Availability)、分区容错性( Partition Tolerance)三者中的两个,另外一个必须被牺牲。

一致性(Consistence):对某个指定的客户端来说,读操作保证能够返回最新的写操作结果(A read is guaranteed to return the most recent write for a given client)。

可用性(Availability):非故障的节点在合理的时间内返回合理的响应 (不是错误和超时的响应)。

分区容错性( Partition Tolerance):当出现网络分区后,系统能够继续 “履行职责”。

我们来具体看看两者的差异:

1、第二版强调了CAP 理论适用于哪种类型的分布式系统,第一,互相连接并共享数据的节点的集合,第二,关注的是对数据的读写操作,而不是分布式系统的所有功能。

2、在一致性上,第一版从节点 node 的角度描述,第二版从客户端 client 的角度描述。第一版强调同一时刻拥有相同数据,第二版并没有强调这点 。这就意味着实际上对于节点来说,可能同一时刻拥有不同数据,这和我们通常理解的一致性是有差异的。

3、在可用性上,第一版的“每个请求都能得到成功或失败的响应”定义比较模糊,因为无论是否符合CAP理论,我们都可以说请求成功和失败,因为超时也算失败,错误也算失败,异常也算失败,结果不正确也算失败;即使是成功的响应,也不一定是正确的。例如,本来应该返回100,但实际上返回了90,这就是成功的响应,但并没有得到正确的结果。相比之下,第二版的解释明确了不能超时,不能出错,结果是合理的,注意没有说“正确”的结果。例如,应该返回100但实际上返回了90,肯定是不正确的结果,但可以是一个合理的结果。

4、在分区容错性上,第一版用的是“继续运行”,第二版用的是“履行职责”。只要系统不宕机,我们都可以说系统在运行,返回错误和拒绝服务都是运行,而“履行职责”表明发挥正常作用,这点和可用性是一脉相承的,相比之下更加明确。

三、CAP潜在的约束

理论的优点在于清晰简洁,易于理解,但缺点就是高度抽象化,省略了很多细节,导致在将理论应用到实践时,由于各种复杂情况,可能出现误解和偏差, CAP 理论也不例外。

1、CAP有适用范围

正如定义中所说,CAP是有适用范围的,乱套用CAP往往谬以千里。

这里以一个电商网站订单模块的下单、付款、扣减库存操作为例说明。在超时的情况下,订单数据和库存数据状态会不一致,这属不属于CAP理论的适用范围呢?答案是不适用。

大家不要一看到不一致就认为适用CAP理论。前面已经讲过,CAP的适用范围只是针对共享、互联的数据,订单和库存系统虽然是互联的,但没有共享的数据,超时情况下产生的不一致只能靠对账和人工修复等方式解决。但如果针对的是各节点的库存数据的一致性,则适用CAP理论,比如当用户下单支付后,各节点的库存数据需要立即更新,以保证所有查看该商品的用户都能看到最新的库存信息。

2、CAP理论中,P是必选项

虽然 CAP 理论定义是三个要素中只能取两个,但放到分布式环境下来思考,我们会发现必须选择 p (分区容忍)要素,因为网络本身无法做到 100%可靠,有可能出故障,所以分区是一个必然的现象。如果我们选择了 CA 而放弃了 P,那么当发生分区现象时,为了保证 C,系统需要禁止写入,当有写入请求时,系统返回 error (例如,当前系统不允许写入),这又和 A 冲突了 ,因为 A 要求返回 no error 和 no timeout。因此,分布式系统理论上不可能选择 CA 架构 ,只能选择 CP 或 AP 架构。

3、CAP关注的粒度是数据, 而不是整个系统

CAP 理论的定义和解释中,用的都是 system、 node 这类系统级的概念,这就给很多人造成了很大的误导,认为我们在进行架构设计时,整个系统要么选择 CP,要么选择 AP。但在实际设计过程中,每个系统不可能只处理一种数据,而是包含多种类型的数据,有的数据必须选择CP,有的数据必须选择 AP。而如果我们做设计时,从整个系统的角度去选择CP还是AP,就会发现顾此失彼,无论怎么做都是有问题的。

一个电商网站核心模块包括会员,订单,商品,支付,促销管理等等,不同的模块数据特点不同,因此适用不同的CAP架构。

会员模块包括登录,个人设置,个人订单,购物车,收藏夹等功能,这些模块只要保证AP,即对用户的及时响应,数据短时间不一致不大会影响使用。订单模块的下单付款扣减库存操作是整个系统的核心,CA都需要保证,在极端情况下牺牲P是可以的。商品模块的商品上下架保证CP即可,因为后端操作可以允许一定的时延;促销模块短时间的数据不一致,结果就是优惠信息看不到,但是已有的优惠保证可用,所以保证AP也可以。

现在大部分电商网站对于支付是独立的系统,C是必须要保证的,AP中A相对更重要,不能因为分区导致所有人都不能支付。

4、CAP是忽略网络延迟的

这是一个非常隐含的假设,布鲁尔在定义一致性时,并没有将延迟考虑进去。也就是说,当事务提交时,数据能够瞬间复制到所有节点。但实际情况下,从节点 A 复制数据到节点 B,总是需要花费一定时间的。这就意味着, CAP理论中的 C 在实践中是不可能完美实现的,在数据复制的过程中,节点 A 和节点 B 的数据并不一致。对于严苛的业务场景。

例如和金钱相关的用户余额、和抢购相关的商品库存,技术上是无法做到分布式场景下完美的一致性的。而业务上必须要求一致性,因此单个用户的余额、单个商品的库存,理论上要求选择 CP 而实际上 CP都做不到,只能选择 CA。也就是说,只能单点写入,其他节点做备份,无法做到分布式情况下多点写入,这是符合实际情况的。

5、CAP的AP和CP不是绝对的

CAP理论告诉我们三者只能取两个,需要牺牲另外一个,这里的牺牲有一定误导作用,因为牺牲让很多人理解成什么都不做,实际上,CAP理论的牺牲只是说分区过程无法保证C或者A,但不意味着什么都不做,因为在系统整个运行周期中,大部分时间都是正常的,发生分区现象的时间并不长,分区期间放弃C或A,并不意味着永远放弃,可以在分区期间进行一些操作,比如记录日志,从而让分区故障解决后,系统能够重新达到CA的状态。

比如用户账号数据,假设选择了CP,则分区发生后,节点1可以继续注册新用户,节点2无法注册新用户,此时节点1可以记录新增日志,当分区恢复后,节点2读取节点1的日志就可以让节点1和节点2同时满足CA的状态。

6、CAP的可用性与高可用有区别

HBASE、MongoDB属于CP架构,Cassandra、CounchDB属于AP系统,但我们能说后者比前者更高可用么?应该不是。CAP中的高可用,是指在某一次读操作中,即使发现不一致,也要返回响应,即在合理时间返回合理响应。我们常说的高可用,是指部分实例挂了,能自动摘除,并由其它实例继续提供服务,关键是冗余。

7、CAP的网络分区有明确定义

网络故障、节点应用出现问题导致超时,属于网络分区,节点宕机或硬件故障,则不属于。因此如果有人说机器挂了怎么样,这种情况不属于CAP理论适用的范围,CAP关注的是分区时的可用性和一致性,不是说保证整个集群不挂。

四、BASE是CAP的补偿

为了解决CAP限制,出现了BASE理论,也就是基本可用(Basically Available)、软状态(Soft state)、最终一致性(Eventually Consistent)理论。BASE是对CAP中一致性和可用性权衡的结果,其通过牺牲强一致性来获取高可用性。

1、基本可用(Basically Available):指的是分布式系统在出现故障的情况下,仍然可以提供服务,尽管这个服务可能不完全,或者有降级,这里的关键是部分和核心。

以电商网站为例,假设一个电商网站有订单服务、商品浏览服务、评论服务、搜索服务等多个服务。如果因为某种原因(如网络分区、硬件故障等)导致评论服务暂时不可用,但是其他服务,如订单服务、商品浏览服务、搜索服务等仍然可用。此时,用户仍然可以浏览商品、下订单和搜索,只是不能进行评论。也就是说,整个系统仍然是"基本可用"的。

2、软状态(Soft state):允许系统中的数据存在一段时间的不一致。

例如,当你第一次访问一个网站的时候,你的计算机会向DNS服务器查询这个网站对应的IP地址,然后DNS服务器会返回IP地址,这个IP地址会被你的计算机或者你的网络设备缓存起来,以备下次访问的时候使用,以节省查询时间。但是,如果在这个缓存期间,网站服务器更换了IP地址,那么你的计算机或者网络设备缓存的DNS解析结果就会过期,这就是一个"软状态"。

3、最终一致性(Eventually Consistent):系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。这里的关键词是“一定时间”和“最终“,“一定时间”和数据的特性是强关联的,不同的数据能够容忍的不一致时间是不同的。

例如,在一个社交媒体网站上,当用户发布一条新的状态更新或者照片,他的朋友们可能不能立刻看到这个更新。这是因为这个新的状态更新需要被复制到数据中心的各个节点,这个过程可能需要一些时间。在这个场景中,用户通常能接受这种延迟,因此对于最终一致性的时间容忍度相对较大。但是,当用户在电商网站购买商品时,库存数据的对最终一致性的时间容忍度相对较小,因此,电商网站需要尽快地更新和传播库存变化,以确保所有的用户都能看到准确的库存信息。

前面讲过,完美的CP是不存在的,即使是几毫秒的数据复制延迟,在这几毫秒的时间间隔内,系统是不符合CP要求的,因此,CAP中的CP方案,实际上也是实现了最终一致性。AP方案中牺牲一致性,则只是在分区期间,而不是永远放弃一致性,在分区故障恢复后,系统应该达到最终一致性,因此,BASE是CAP理论的延伸。

五、CAP和ACID的辨析

CAP中的一致性有时会和ACID的一致性产生概念混淆,那么ACID的C到底跟CAP的C有什么区别呢?

ACID是指数据库事务正确执行的四个基本特性:原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。在这里,一致性的定义是:数据库的状态应该从一个一致的状态转移到另一个一致的状态,即事务执行前后都保持业务规则的一致性,如完整性约束等。

两者的主要区别在于其应用的范围和关注点不同:

1、CAP中的一致性更多的是从分布式系统的角度考虑,关注的是分布式节点间的数据一致性问题,即所有节点看到的数据是否实时一致。

2、ACID中的一致性是从单个数据库系统的角度考虑,主要关注的是数据库在进行事务操作后,数据是否满足预定义的业务规则和约束,保证数据的正确性。

举个具体的例子来说明:

假设你有一个银行应用程序,这个程序有一个简单的业务规则:客户的账户余额不能小于0。在这个场景下,如果一个客户想要从他们的账户中提取500美元,系统会首先检查账户余额是否满足这个要求。如果账户余额是600美元,那么提取操作是可以进行的,并且完成后,账户余额将是100美元。这是一个一致性状态,因为它满足了业务规则。

现在,假设在这个事务中,提取操作已经完成,但是在更新余额时,系统突然崩溃了。在这种情况下,系统应该能够恢复并且完成余额更新,或者它应该完全忽略这个事务,就好像它从未发生过一样。在任何情况下,客户的账户余额都不应该被错误地减少,因为那将违反业务规则。

所以,ACID的一致性是关于在事务开始和结束时满足特定业务规则和约束的,无论事务过程中是否发生了错误或者系统崩溃,数据库都应始终保持一致性状态。

六、CAP的应用案例

1、ZooKeeper

ZooKeeper(ZK)是一个分布式的、开放源码的分布式应用程序协调服务,由雅虎公司开发,并是Apache项目的一部分。ZooKeeper是一种典型的CP(Consistency/一致性, Partition tolerance/分区容错性)系统。

ZooKeeper的设计就是这样的。当网络发生分裂,只有数量大于半数的节点(称为“过半机制”)可以继续提供服务,能够保证数据的一致性。数量少于半数的节点会拒绝服务,以此来保证整个系统的一致性。这意味着在部分节点不可用或者网络分区的情况下,ZooKeeper可能无法保证所有客户端的可用性。

ZooKeeper主要被用于管理和协调分布式系统中的状态信息,如配置信息,状态同步,命名服务和分布式锁等。数据的一致性在这些用途中是非常关键的,因此ZooKeeper选择了牺牲一部分可用性以保证一致性。

2、Kafka

CAP定理告诉我们,在网络分区的情况下,不可能同时保证一致性(Consistency)和可用(Availability) 。但这并不意味着我们不能在一致性和可用性之间找到适合自己的平衡点。

在Kafka中,例如,我们可以通过设置不同的"acks"(acknowledgements)和"min.insync.replicas"参数来权衡一致性和可用性。如果我们设置"acks"为"all"或者"-1",并且将"min.insync.replicas"设置为一个大于1的数,那么我们就可以提高数据的一致性,但可能会降低系统的可用性,因为每次写操作都需要等待所有的副本都确认。

反之,如果我们设置"acks"为"1",那么写操作只需要等待一个副本的确认,这就提高了系统的可用性,但可能降低数据的一致性,因为其他的副本可能还没有完成数据的更新。

3、HBase

HBase的设计目标是提供高速的读写访问大量数据,并保证强一致性。在HBase中,数据是自动分片的,每个分片(称为region)由一个RegionServer来服务,每个行键只由一个RegionServer来服务,所以对单个行的读写都是强一致的。

当网络分区发生时,HBase通常会选择牺牲部分可用性以保持一致性和分区容错性。比如说,如果一个RegionServer出现问题,HBase的主节点(HMaster)会将它上面的regions重新分配给其他健康的RegionServers,这个过程中涉及的regions会在短时间内不可用,因此,HBASE属于CP系统。

4、redis

Redis是一个开源的键值存储系统,它通常用于作为数据库、缓存和消息代理。Redis单实例是一个基于内存的数据结构存储,并提供持久化机制。对于单实例的Redis,CAP理论并不适用,因为它并不是一个分布式系统。

在Redis的主从复制模式中,如果主节点故障,系统需要手动干预才能恢复写服务(即升级一个从节点为新的主节点)。这意味着它不能自动处理网络分区,因此在严格意义上,它也不能被归类为CAP理论中的任何一类。

对于Redis Cluster,它是一个分布式的Redis解决方案,能够在一定程度上处理网络分区的问题。在出现网络分区时,Redis Cluster会停止对分区节点的操作以保持数据的一致性,所以它更倾向于CP系统。

5、Cassandra

Apache Cassandra是一个开源的分布式NoSQL数据库,它是为了满足高可用性和扩展性的需求而设计的。

Cassandra使用了一种名为最终一致性(Eventual Consistency)的模型。在这个模型中,系统不保证在任何时刻所有的副本都是一致的,但保证在没有新的更新操作的情况下,所有的副本最终会达到一致的状态。

具体来说,当一个写操作发生时,Cassandra只需要一部分(可以配置)副本确认就可以认为写操作成功了。这样可以提高系统的可用性和写入性能。然而,这也意味着在某些情况下,读操作可能会返回过时的数据,因为不一致的副本可能还没有被更新。

所以,Cassandra是一个典型的AP系统。然而,通过调整配置,例如设置更严格的一致性级别,可以使Cassandra在一定程度上提供更强的一致性保证。

希望对你有所启示。



Tags:分布式架构   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,不构成投资建议。投资者据此操作,风险自担。如有任何标注错误或版权侵犯请与我们联系,我们将及时更正、删除。
▌相关推荐
分布式架构中跨地域部署的数据同步和一致性问题
在Java项目的分布式架构中,如果需要实现跨地域部署,就会面临数据同步和一致性问题。由于网络延迟、带宽限制和地理位置差异等因素,分布式系统中的数据可能会发生不一致的情况。...【详细内容】
2023-10-26  Search: 分布式架构  点击:(213)  评论:(0)  加入收藏
分布式架构和微服务架构的区别
1、含义不同微服务架构是一种将一个单一应用程序开发为一组小型服务的方法,每个服务运行在自己的进程中。分布式系统是若干独立计算机的集合,这些计算机对用户来说就像单个相...【详细内容】
2023-09-13  Search: 分布式架构  点击:(235)  评论:(0)  加入收藏
分布式架构入门:一文轻松搞懂晦涩的CAP理论!
对于设计分布式系统的架构师来说, CAP 是必须掌握的理论。CAP 定理( CAP theorem )又被称作布鲁尔定理( Brewer’s theorem),由加州大学伯克利分校(计算机领域神一样的大...【详细内容】
2023-08-09  Search: 分布式架构  点击:(336)  评论:(0)  加入收藏
分布式架构基础-远程通信tcp/ip协议原理
1、一个http请求的流程在分布式架构中,有一个很重要的环节,就是分布式网络中的计算机节点彼此之间需要通信。这个通信的过程一定会涉及到通信协议相关的知识点,我们每天都在用...【详细内容】
2023-07-14  Search: 分布式架构  点击:(339)  评论:(0)  加入收藏
分布式架构 WebSocket 解决方案,学会了你就是那个架构师
前导近期有个同事跟我说遇到一件很奇怪的事情,时不时收到售后反馈说 部分用户无法接收到聊天室(WebSocket 服务)消息,然而在测试服以各种方式测试都无法复现这种现象。于是陷...【详细内容】
2022-10-21  Search: 分布式架构  点击:(715)  评论:(0)  加入收藏
分布式架构的演进过程
一个软件系统随着功能越来越多,调用量急剧增长,整个系统逐渐碎片化,越来越无序,最终无法维护和扩展,所以系统在一段时间的野蛮生长后,也需要及时干预,避免越来越无序。架构的本质就...【详细内容】
2021-09-24  Search: 分布式架构  点击:(277)  评论:(0)  加入收藏
「分布式架构」“一切都是分布式”说最终一致性
大约一年前,我在一致性模型上写了这篇文章的第一个版本,但我从来没有对它感到满意,因为它写得很匆忙,而且这个主题足够重要,需要得到更彻底的处理。ACM Queue要求我修改它以便在...【详细内容】
2020-12-22  Search: 分布式架构  点击:(375)  评论:(0)  加入收藏
大白话给你讲分布式架构,3分钟让你学一遍
引言随着越来越多的人参与到互联网的浪潮来,曾经的单体应用架构越来越无法满足需求,所以,分布式集群架构出现,也因此,分布式搭建开发成为了Web开发者必掌握的技能之一。那什么是...【详细内容】
2020-10-14  Search: 分布式架构  点击:(226)  评论:(0)  加入收藏
工行“去O”数据库选型与分布式架构设计
围绕Database、Bigdata、AiOps的企业级专业社群。顶级大咖、技术干货,每天精品原创文章推送,每周线上技术分享,每月线下技术沙龙,受众20W+。...【详细内容】
2020-08-10  Search: 分布式架构  点击:(305)  评论:(0)  加入收藏
案例 | 中小银行分布式架构探索与实践
近年来,随着银行业务量的快速增长,一些大型商业银行早已布局分布式架构转型,这不仅是国家安全战略的要求,也是随着互联网发展,商业银行提升自身金融服务能力的需要。商业银行系...【详细内容】
2020-08-04  Search: 分布式架构  点击:(261)  评论:(0)  加入收藏
▌简易百科推荐
对于微服务架构监控应该遵守的原则
随着软件交付方式的变革,微服务架构的兴起使得软件开发变得更加快速和灵活。在这种情况下,监控系统成为了微服务控制系统的核心组成部分。随着软件的复杂性不断增加,了解系统的...【详细内容】
2024-04-03  步步运维步步坑    Tags:架构   点击:(5)  评论:(0)  加入收藏
大模型应用的 10 种架构模式
作者 | 曹洪伟在塑造新领域的过程中,我们往往依赖于一些经过实践验证的策略、方法和模式。这种观念对于软件工程领域的专业人士来说,已经司空见惯,设计模式已成为程序员们的重...【详细内容】
2024-03-27    InfoQ  Tags:架构模式   点击:(13)  评论:(0)  加入收藏
哈啰云原生架构落地实践
一、弹性伸缩技术实践1.全网容器化后一线研发的使用问题全网容器化后一线研发会面临一系列使用问题,包括时机、容量、效率和成本问题,弹性伸缩是云原生容器化后的必然技术选择...【详细内容】
2024-03-27  哈啰技术  微信公众号  Tags:架构   点击:(10)  评论:(0)  加入收藏
DDD 与 CQRS 才是黄金组合
在日常工作中,你是否也遇到过下面几种情况: 使用一个已有接口进行业务开发,上线后出现严重的性能问题,被老板当众质疑:“你为什么不使用缓存接口,这个接口全部走数据库,这怎么能扛...【详细内容】
2024-03-27  dbaplus社群    Tags:DDD   点击:(11)  评论:(0)  加入收藏
高并发架构设计(三大利器:缓存、限流和降级)
软件系统有三个追求:高性能、高并发、高可用,俗称三高。本篇讨论高并发,从高并发是什么到高并发应对的策略、缓存、限流、降级等。引言1.高并发背景互联网行业迅速发展,用户量剧...【详细内容】
2024-03-13    阿里云开发者  Tags:高并发   点击:(6)  评论:(0)  加入收藏
如何判断架构设计的优劣?
架构设计的基本准则是非常重要的,它们指导着我们如何构建可靠、可维护、可测试的系统。下面是这些准则的转换表达方式:简单即美(KISS):KISS原则的核心思想是保持简单。在设计系统...【详细内容】
2024-02-20  二进制跳动  微信公众号  Tags:架构设计   点击:(36)  评论:(0)  加入收藏
详解基于SpringBoot的WebSocket应用开发
在现代Web应用中,实时交互和数据推送的需求日益增长。WebSocket协议作为一种全双工通信协议,允许服务端与客户端之间建立持久性的连接,实现实时、双向的数据传输,极大地提升了用...【详细内容】
2024-01-30  ijunfu  今日头条  Tags:SpringBoot   点击:(10)  评论:(0)  加入收藏
PHP+Go 开发仿简书,实战高并发高可用微服务架构
来百度APP畅享高清图片//下栽のke:chaoxingit.com/2105/PHP和Go语言结合,可以开发出高效且稳定的仿简书应用。在实现高并发和高可用微服务架构时,我们可以采用一些关键技术。首...【详细内容】
2024-01-14  547蓝色星球    Tags:架构   点击:(115)  评论:(0)  加入收藏
GraalVM与Spring Boot 3.0:加速应用性能的完美融合
在2023年,SpringBoot3.0的发布标志着Spring框架对GraalVM的全面支持,这一支持是对Spring技术栈的重要补充。GraalVM是一个高性能的多语言虚拟机,它提供了Ahead-of-Time(AOT)编...【详细内容】
2024-01-11    王建立  Tags:Spring Boot   点击:(124)  评论:(0)  加入收藏
Spring Boot虚拟线程的性能还不如Webflux?
早上看到一篇关于Spring Boot虚拟线程和Webflux性能对比的文章,觉得还不错。内容较长,抓重点给大家介绍一下这篇文章的核心内容,方便大家快速阅读。测试场景作者采用了一个尽可...【详细内容】
2024-01-10  互联网架构小马哥    Tags:Spring Boot   点击:(115)  评论:(0)  加入收藏
站内最新
站内热门
站内头条