您的位置 首页 elasticsearch

分布式集群的CAP理论(待完善)

分布式系统的最大难点,就是各个节点的状态如何保持一致

CAP理论是在设计分布式系统的过程中,处理数据一致性问题时必须考虑的理论。

C(一致性)、A(高可用)、P(分区容忍)

1. 一致性

读操作获取到最新的写结果

Consistency : Every read receives the most recent write or an error

2. 高可用

非故障节点在用户可接受的时间内返回可以接受的结果(不接受超时或错误)

Availability : Every request receives a (non-error) response – without the guarantee that it contains the most recent write

 3. 分区容错 (必须要有的)

部分服务可以不可用,但系统必须正常对外提供服务

Partition tolerance : The system continues to operate despite an arbitrary number of messages being dropped (or delayed) by the network between nodes

三者不可得兼,但分布式系统必须保证分区容错  P,所以只能是CP或者AP

分布式系统的最大难点,就是各个节点的状态如何同步。CAP 定理是这方面的基本定理,也是理解分布式系统的起点。

因为 P  是我们必须的,分区容错  我们先来说一下 分区容错 

一、分区容错 

CAP 定理的含义 - 阮一峰的网络日志 (ruanyifeng.com)

 

Consistency 和 Availability 的矛盾

一致性和可用性,为什么不可能同时成立?答案很简单,因为可能通信失败(即出现分区容错)。

如果保证 G2 的一致性,那么 G1 必须在写操作时,锁定 G2 的读操作和写操作。只有数据同步后,才能重新开放读写。锁定期间,G2 不能读写,没有可用性不。

如果保证 G2 的可用性,那么势必不能锁定 G2,所以一致性不成立。

综上所述,G2 无法同时做到一致性和可用性。系统设计时只能选择一个目标。如果追求一致性,那么无法保证所有节点的可用性;如果追求所有节点的可用性,那就没法做到一致性。

CAP 定理的含义 - 阮一峰的网络日志 (ruanyifeng.com)

 

Eureka与Zk - 饮酒至天明 - 博客园 (cnblogs.com)

欢迎来撩 : 汇总all

白眉大叔

关于白眉大叔linux云计算: 白眉大叔

热门文章