CAP理论(eureka与zookeeper选型)

mac2025-03-06  19

CAP理论(eureka与zookeeper选型)

C:Consistency,数据一致性 A:Availability,可用性,系统响应速度 P:Partition tolerance,分区容错性

1.Partition tolerance

分区容错性:大多数分布式系统,都分布在多个子网络,每个子网络就叫一个区,分区容错意思是:区之间通信可能失败,例如一个区在中国,一个区在美国,它们之间可能会无法通信 如下图,G1和G2是两个区的服务器,G1向G2发送一条消息,G2可能无法收到,系统设计时,必须考虑这种情况,但是一般情况下,分区容错无法避免,所以,我们认为在CAP理论中,P总是成立

2.Consistency

一致性:用户写和读的内容保持一致,例如:client写的是v1,读的就必须是v1,这就是数据一致

问题是,由于client可能想G1写数据,但是在G2读数据,由于G1和G2网络通信失败,造成数据不一致,这就不满足一致性

3.Availability

可用性:即只要服务器收到用户的请求,立刻做出回应,例如client无论向G1还是G2发起请求,只要服务器收到请求,立刻将数据相应给client

4.Consistency和Availability的矛盾

一致性和可用性不能同时成立,原因很简单,因为通信可能失败(分区容错性一定成立) 如果保证G1和G2数据一致性,那么客户端在向G1写数据时,G1必须将数据同步到G2,只有数据同步,才能保证数据的一致性,但是,在同步时,网络可能出现异常,此时client向G2发起读的请求, 如果要保持数据一致性,G2必须等到数据同步后才能响应给client,这样就不能保证可用性 如果要保证可用性,则G2需要立刻向client响应,但此时并未同步到G1的数据,那么响应的数据与client之前写的数据不一致 结论:CAP不能在分布式结构中同时存在,一般只能做到cp或者ap

5.eureka和zookeeper选型

强一致性(偏向cp):任意时间,查看分布式结构的任意节点,数据都是一致的 弱一致性(最终一致性)(偏向ap):任意时间,整体一致性未必一致,但是只要过了一段时间(毫秒、微秒),整体一致性存在,可用性更高 eureka:偏向ap(对一致性要求较低,响应要求较高) zookeeper:偏向cp,一致性要求较高,响应相对较低

最新回复(0)