写点什么

架构师训练营 - 第六周 - 作业

用户头像
Anrika
关注
发布于: 2020 年 07 月 15 日

请简述 CAP 原理。

CAP定理指的是在一个分布式系统中, Consistency(一致性)、 Availability(可用性)、Partition tolerance(分区容错性),三者不可得兼。

  • Consistency(一致性):读操作一定能读到最新的值。

  • Availability(可用性):一个用户请求一定能收到响应。

  • Partition tolerance(分区容错性):分布式系统分布在多个子网络中,当部分子网络出现故障时,分布式系统依然能提供最初设计的一致性或者可用性服务。

根据定理,分布式系统只能满足三项中的两项而不可能满足全部三项。理解CAP理论的最简单方式是想象两个节点分处分区两侧。允许至少一个节点更新状态会导致数据不一致,即丧失了C性质。如果为了保证数据一致性,将分区一侧的节点设置为不可用,那么又丧失了A性质。除非两个节点可以互相通信,才能既保证C又保证A,这又会导致丧失P性质。

当网络分区失效发生的时候,我们要么取消操作,这样数据就是一直的,但是系统却不可用;要么你我们继续写入数据,但是数据的一致性就得不到保证。

对于一个分布式系统而言,网络失效一定会发生,也就是说,分区耐受性是必须要保证的,那么在可用性和一致性就必须二选一。

当网络分区失效,也就是网络不可用的时候,如果选择了一致性,系统就可能返回一个错误码或者干脆超时,即系统不可用。如果选择了可用性,那么系统总是可以返回一个数据,但是并不能保证这个数据是最新的。

所以,关于CAP原理,更准确的说法是,在分布式系统必须要满足分区耐受性的前提下,可用性和一致性无法同时满足。



用户头像

Anrika

关注

还未添加个人签名 2018.08.21 加入

还未添加个人简介

评论

发布
暂无评论
架构师训练营 - 第六周 - 作业