分布式理论|分布式理论 —— CAP 定理
一、什么是 CAP 定理
文章图片
2000 年的时候,Eric Brewer 教授提出了 CAP 猜想,2年后,被 Seth Gilbert 和 Nancy Lynch 从理论上证明了该猜想的可能性。从此,CAP 理论正式在学术上成为了分布式计算领域的公认定理。并深深的影响了分布式计算的发展。
CAP 理论表明,一个分布式系统不可能同时满足一致性(Consistency),可用性(Availability)和分区容错性(Partition tolerance)这三个基本需求,最多只能同时满足其中的2个。
文章图片
什么是分区?
在分布式系统中,不同的节点分布在不同的子网络中,由于一些特殊的原因,这些子节点之间出现了网络不通的状态,但它们的内部子网络是正常的,从而导致了整个系统的环境被切分成了若干个孤立的区域。这就是分区。
二、什么是高可用(High Availability)?
高可用,简称 HA,是系统一种特征或者指标。通常是指,提供一定性能上的服务运行时间,高于平均正常时间段。反之,消除系统服务不可用的时间。衡量系统是否满足高可用,就是当一台或者多台服务器宕机的时候,系统整体和服务依然正常可用。
举个例子,一些知名的网站保证 4 个 9 以上的可用性,也就是可用性超过 99.99%。那 0.01% 就是所谓故障时间的百分比。比如电商网站,服务不可用会造成商家损失金钱和用户。那么在提高可用性基础的同时,对系统宕机和服务不可用会有补偿。
文章图片
三、为什么只能 3 选 2?
文章图片
能不能同时满足这三个条件?假设有一个系统如下:
文章图片
【分布式理论|分布式理论 —— CAP 定理】整个系统由两个节点配合组成,之间通过网络通信,当节点 A 进行更新数据库操作的时候,需要同时更新节点 B 的数据库(这是一个原子的操作)。
上面这个系统怎么满足 CAP 呢?
- C:当节点 A 更新的时候,节点 B 也要更新。
- A:必须保证两个节点都是可用的。
- P:当节点 A、B 出现了网络分区,必须保证对外可用。
所以,最多满足两个条件:
文章图片
四、能不能解决 3 选 2 的问题? 难道真的没有办法解决这个问题吗?CAP 理论已经提出了 13 年,也许可以做些改变。仔细想想,分区是百分之百出现的吗?如果不出现分区,那么就能够同时满足 CAP。如果出现了分区,可以根据策略进行调整。比如 C 不必使用那么强的一致性,可以先将数据存起来,稍后再更新,实现所谓的 “最终一致性”。
这个思路又是一个庞大的问题,也引出了第二个理论 Base 理论。
推荐阅读
- 急于表达——往往欲速则不达
- 慢慢的美丽
- 《真与假的困惑》???|《真与假的困惑》??? ——致良知是一种伟大的力量
- 2019-02-13——今天谈梦想()
- 考研英语阅读终极解决方案——阅读理解如何巧拿高分
- Ⅴ爱阅读,亲子互动——打卡第178天
- 低头思故乡——只是因为睡不着
- 取名——兰
- 每日一话(49)——一位清华教授在朋友圈给大学生的9条建议
- 广角叙述|广角叙述 展众生群像——试析鲁迅《示众》的展示艺术