CAP 原则指的是在一个分布式系统中,Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。
● 一致性(C):在分布式系统中的所有数据备份,在同一时刻是否同样的值。(等同于所有节点访问同一份最新的数据副本)
● 可用性(A):在集群中一部分节点故障后,集群整体是否还能响应客户端的读写请求。(对数据更新具备高可用性)
● 分区容错性(P):以实际效果而言,分区相当于对通信的时限要求。系统如果不能在时限内达成数据一致性,就意味着发生了分区的情况,必须就当前操作在C和A之间做出选择。
Zookeeper 和 Eureka 的区别:
Zookeeper 遵循的是 CP 原则:
Zookeeper 节点分有主从的概念,在运行期间,如果主节点挂掉了,Zookeeper 则会在所有存活节点中重新选举一个节点作为主节点。在选举期间,整个集群节点都将不会处理任何事情,直到选举结束。所以 Zookeeper 选择了一致性,而舍弃的可用性。
Eureka 遵循的是 AP 原则:
Eureka 没有主从节点的概念,节点之间是平等的,就算某个节点挂掉了,也不会影响其他节点,保证了 可用性。