CAP 理论
CAP理论是分布式系统理论中的一个重要概念,它阐述了在分布式计算环境中,一致性(Consistency)、可用性(Availability)和分区容错性(Partition Tolerance)三者之间的权衡关系。
- C(Consistency)是一致性,指的是多个节点上的数据副本必须保持一致,即系统的状态在任何时刻都是一致的
注意此处的 C 是强一致性
-
A(Availability)是可用性,指的是系统必须在任何时候都能够相应客户端请求,即系统一直处于可用状态
-
P(Partition Tolerance)是分区容错性,指的是系统在遇到网络分区故障时仍然能够保持正常的工作,即系统能够容忍任意数量的消息丢失或网络分区。
CAP 的核心理论思想就是说,一个分布式系统最多只能同时满足上述三种特性中的两个,无法同时满足所有的三个特性
-
要么不发生网络分区,也就是选择CA,放弃分区容错性,适用于小规模的集中式系统
-
要么当发生网络分区时,
- 要么保证可用性,放弃一致性,允许节点处理请求并返回不一致的结果,也就是选择AP,适用于对数据实时性要求比较高的系统,互联网上的系统大多是如此,比如社交网络
- 要么保证一致性,放弃可用性,暂停服务指导网络分区恢复,也就是选择CP,适用于对数据一致性要求高的系统,比如金融交易系统
但不管如何权衡,我们都无法彻底放弃一致性,如果真的放弃一致性,那么就说明这个系统的数据根本不可信,数据也就没有意义
所以退而求其次,互联网绝大多数场景,会选择最终一致性,只要这个最终时间是在用户可接受的范围即可
BASE 理论
-
基本可用(Basically Available),指分布式系统在出现不可预知 故障的时候,允许损失部分可用性
-
软状态(Soft state),指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体可用性
-
最终一致性(Eventually consistent),强调是所有的数据更新操作,在经过一段时间同步后,最终都能够达到一个一致的状态,而不需要实时保证系统数据的强一致性
BASE 理论是对CAP理论的延伸,核心思想就是即使无法做到强一致性,但应用可以采用适合的方式达到最终一致性
BASE 理论面向的是大型高可用可扩展的分布式系统,和传统的数据库事务ACID 特性是相反的
刚性事务满足 ACID 理论,柔性事务满足 BASE 理论,追求基本可以、最终一致