【每日一知】CAP理论 (2021.02.19)
作者:互联网
【每日一知】CAP理论 (2021.02.19)
注:上接 集群/分布式是什么? (2021.02.09)
https://blog.csdn.net/qq_51366188/article/details/113769852
一、引入
分布式简单理解就是:一个业务分拆多个子业务,部署在不同的服务器上
一般来说,一个子业务我们称为节点。
如果你接触过一些分布式的基础概念,那肯定会听过CAP这个理论。
就好比你学了MySQL的InnoDB存储引擎相关知识,你肯定听过ACID!
(哈哈哈哈哈这个我也没听说过,下期讲!)
二、简介
C:数据一致性(Consistency)
所有节点拥有数据的最新版本
A:可用性(Availability)
数据具备高可用性
P:分区容错性(Partition-tolerance)
容忍网络出现分区,分区之间网络不可达。
三、讲解
- 下面有三个节点(它们是集群的),此时三个节点都能够相互通信:
- 由于我们的系统是分布式的,节点之间的通信是通过网络来进行的。
只要是分布式系统,那很有可能会出现一种情况:因为一些故障,使得有些节点之间不连通了,整个网络就分成了几块区域。
数据就散布在了这些不连通的区域中,这就叫分区.
- 现在出现了网络分区后,此时有一个请求过来了,想要注册一个账户。
此时我们节点一和节点三是不可通信的,这就有了抉择:
- 如果允许当前用户注册一个账户,此时注册的记录数据只会在节点一和节点二或者节点二和节点三同步(节点一和节点三的记录不能同步)
这种情况其实就是选择了可用性(availability),抛弃了数据一致性(consistency) - 如果不允许当前用户注册一个账户(就是要等到节点一和节点三恢复通信)。节点一和节点三一旦恢复通信,我们就可以保证节点拥有的数据是最新版本。
这种情况其实就是抛弃了可用性(availability),选择了数据一致性(consistency)
三、总结
CAP是无法完全兼顾的,从上面的例子也可以看出,我们可以选AP,也可以选CP,但这并不意味着完全放弃另一个。
- 在CAP理论中,C所表示的一致性是强一致性(每个节点的数据都是最新版本),其实一致性还有其他级别的:
弱一致性:弱一致性是相对于强一致性而言,它不保证总能得到最新的值;
最终一致性:放宽对时间的要求,在被调完成操作响应后的某个时间点,被调多个节点的数据最终达成一致 - 可用性的值域可以定义成0到100%的连续区间。
所以,CAP理论定义的其实是在容忍网络分区的条件下,“强一致性”和“极致可用性”无法同时达到!
转自:知乎 https://zhuanlan.zhihu.com/p/43023436
====================================================================
每日更新
如果你喜欢这样的形式,记得 留言点赞关注,你们的支持是我创作的动力,我也在分享的同时跟你们一起学习√
欢迎建议、指正、批评。
标签:2021.02,可用性,一知,19,分区,CAP,一致性,节点 来源: https://blog.csdn.net/qq_51366188/article/details/113860354