企业🤖AI智能体构建引擎,智能编排和调试,一键部署,支持私有化部署方案 广告
## CAP理论 2000年7月,加州大学伯克利分校Eric Brewer教授提出了著名的CAP猜想。2年后,来自麻省理工学院的Seth Gilbert和Nancy Lynch从理论上证明了CAP,从此CAP定理成为了分布式计算领域公认的定理。 > CAP定理,又被叫作布鲁尔定理 CAP理论告诉我们:一个分布式系统不可能同时满足一致性(**C:Consistency**)、可用性(**A:Availability**)、分区容错性(**P:Partition tolerance**)这三个基本需求,并且最多只能满足其中的两项 * 一致性:指更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致 * 可用性:指用户在访问数据时可以得到及时的响应 * 分区容错性:指分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务 > CAP 理论中是忽略网络延迟,也就是当事务提交时,从节点 A 复制到节点 B 没有延迟,但是在现实中这个是明显不可能的,所以总会有一定的时间是不一致 ![](https://img.kancloud.cn/f2/a6/f2a64327a4e34e8fcee5f1fcf3187551_560x325.png) #### 一致性 一致性是指从系统外部读取系统内部的数据时,在一定约束条件下相同,即数据变动在系统内部各节点应该是同步的。根据一致性的强弱程度不同,可以将一致性级别分为如下几种: * 强一致性(strong consistency)。任何时刻,任何用户都能读取到最近一次成功更新的数据。 * 单调一致性(monotonic consistency)。任何时刻,任何用户一旦读到某个数据在某次更新后的值,那么就不会再读到比这个值更旧的值。也就是说,可  获取的数据顺序必是单调递增的。 * 会话一致性(session consistency)。任何用户在某次会话中,一旦读到某个数据在某次更新后的值,那么在本次会话中就不会再读到比这值更旧的值   会话一致性是在单调一致性的基础上进一步放松约束,只保证单个用户单个会话内的单调性,在不同用户或同一用户不同会话间则没有保障。示例case:php的  session概念。 * 最终一致性(eventual consistency)。用户只能读到某次更新后的值,但系统保证数据将最终达到完全一致的状态,只是所需时间不能保障。 * 弱一致性(weak consistency)。用户无法在确定时间内读到最新更新的值。