CAP定理和BASE理论
CAP定理
CAP定理: 一个分布式系统最多只能满足一致性 (Consistency), 可用性(Availability)和分区容错性(Partition tolerance)其中的两种.
一致性(Consistency)
- all nodes see the same data at the same time.
- Reads and writes always succeed .
- 分区容错性: 项目属于分布式项目所以分区容错性是必须要用的, 即使每个服务的可用性是99.999% 但是在服务众多的情况下, 系统整体可用性也会有很大的下降 , 所以保持分区容错性 P 是非常重要的.
- 一致性: 银行类这些对于信息准确性不能有一丝让步的分布式项目 必须实现一致性. 相对于分区容错性和可用性来说, 一致性的地位要大大高于其二.
可用性(Availability)
分区容错性(Partition tolerance)
- the system continues to operate despite arbitrary message loss or failure of part of the system .
CAP权衡
- 可用性, 对于除了银行这一类企业来说, 高可用性更加重要, 只要能够保证BASE中的最终一致性 就可以牺牲掉 强一致性来 获得更稳定的服务提供, 这样即使可能会降低一部分的用户体验, 但是不会造成用户流失这样严重的情况.
BASE理论
BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性, 但应用可以采用合适的方式做到最终一致性.
基本可用(Basically Available)
基本可用是指分布式系统在在出现故障的时候, 可以损失一部分的可用性, 但是要保证核心功能可用 . 电商大促销的时候, 为了应对访问量激增, 部分用户可能会被引导到降级页面, 服务层可能只提供降级服务 , 这就是损失部分可用性的体现 . —— 貌似前些年的时候双十一逛淘宝的时候 有人遇到这种服务降低的情况.
软状态(Soft State)
软状态是指允许系统存在中间状态, 而该中间状态不会影响系统整体的可用性. 分布式存储中一般一份数据至少会有三个副本, 允许不同节点间副本同步的延迟及时软状态的体现, MySQL Replication的异步复制就是软状态的一种体现.
最终一致性(Eventual Consistency)
最终一致性是指系统中的所有数据副本经过一段时间后, 最终能够达到一致的状态. 弱一致性和强一致性相反 , 最终弱一致性是弱一致性的一种特殊情况.
ACID和BASE的区别和联系
ACID是传统数据库常用的设计理念, 追求强一致性模型. BASE支持的是大型分布式系统, 提出通过牺牲强一致性获得高可用性. ACID和BASE代表了两种截然相反的设计哲学, 在分布式系统设计的场景中, 系统组件对一致性的要求是不同的, 因此ACID和BASE又会结合使用.