本文主要是介绍CAP为什么不能同时满足, BASE理论,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
在分布式系统中, 我们经常会提到CAP理论和BASE理论.
其中CAP代表什么呢?
- C(Consistency): 一致性, 就是说我们部署一套系统, 肯定都是部署在多台机器上, 形成一个集群, 而集群中的各个结点上面的数据要保持一致.
- A(Availability): 可用性, 可用性就是指各个结点都必须保持可用.
- P(Partition tolerance): 分区容错性, 这点是分布式系统最基本的要求.
通常我们会说CAP中的C和A不能同时满足, 为什么呢?
首先我们应有个基本的理解, 系统部署在多个结点, 各个结点是需要进行通信, 数据共享的. 假如我们有3个结点.
- 如果满足C(一致性), 也就是说当Server1收到一条最新的数据, 需要把这条数据广播到Server2和Server3, 在广播期间, 为了保证一致性, Server是不对外保证服务的. 所以在有限时间内, 不能保证所有结点的可用性, 也就是CAP中的A.
- 如果满足A(可用性), 很显然, Server1收到一条新的数据更新, 在数据更新到Server2和Server3期间, 如果有新的请求到Server2和Server3, 那么Server1和Server2或者Server1和Server3之间的数据是不一致的, 也就是满足不了CAP中的C.
由此可见, CAP有个重要的点是A(可用性), 因为客户端请求时有时间限制的, 所以可用性必须是在有限时间内必须保证可用.
那么BASE理论又是什么呢?
- Base Available(基本可用),系统在出现不可预知的故障的时候,允许丧失部分可用性
- Soft state, 允许数据存在的中间状态, 灰度状态, 过渡状态
- Eventually consistent,最终一致性
这篇关于CAP为什么不能同时满足, BASE理论的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!