CAP理论
C:Consistency 一致性
A:Availablity 可用性
P:Partition Tolerance 分区容错性
什么是一致性?什么是可用性?什么是分区,什么是分区容错性?
|
选项 |
描述 |
|
C(Consistence) |
一致性,指数据在多个副本之间能够保持一致的特性(严格的一致性) |
|
A(Availability) |
可用性,指系统提供的服务必须一直处于可用的状态,每次请求都能获取到非错的响应——但是不保证获取的数据为最新数据。 |
|
P(Network partitioning) |
分区容错性,分布式系统在遇到任何网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务,除非整个网络环境都发生了故障。 |
分区:在分布式系统中,不同的节点分布在不同的子网络中,由于一些特殊的原因,这些子节点之间出现了网络不通的状态,但他们的内部子网络是正常的。从而导致了整个系统的环境被切分成了若干个孤立的区域。这就是分区。
CAP理论,三选二
CAP理论告诉我们:一个分布式系统不可能同时满足一致性(C:Consistency)、可用性(A:Availability)和分区容错性(P:Partition tolerance)这三个基本需求,最多只能同时满足其中两项
|
选 择 |
说 明 |
|
CA |
放弃分区容错性,加强一致性和可用性,其实就是传统的单机数据库的选择 |
|
AP |
放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性,这是很多分布式系统设计时的选择,例如很多NoSQL系统就是如此 |
|
CP |
放弃可用性,追求一致性和分区容错性,基本不会选择,网络问题会直接让整个系统不可用 |
解决三选二的问题 -- BASE理论、ACID事务管理
参考:
- 分布式理论(一) —— CAP 定理:https://www.cnblogs.com/stateis0/p/9062121.html
- 聊聊分布式系统一致性问题,你懂几分?:https://developer.51cto.com/art/202005/615961.htm?pc
- 从分布式一致性谈到CAP理论、BASE理论:https://www.cnblogs.com/szlbm/p/5588543.html