CAP定理
2000年7月加州大学伯克利分校 Eric Brewer教授提出CAP猜想,两年后被证明。
CAP理论告诉我们,一个分布式系统不可能同时满足一致性(C,Consistency),可用性(A,Availability)和分区容错性(P,Partition tolerance),最多只能同时满足其中两个。
一致性:分布式系统中,能够做到针对一个数据更新成功后,其他所有用户都可以读取到[最新的值],这样的系统就是强一致性的。
可用性:[有限时间内][返回结果]
分区容错性:分布式系统在遇到任何网络分区故障的时候,仍然需要能够提供满足一致性和可用性的服务。
其实CAP定理是理论,现实场景中的CAP也不一定真的会放弃其中一个不做,而是我们可以着重性的保证其他两个,而剩下的一个尽量保证。
BASE原则
BASE原则,是为了解决关系数据库强一致性引起的问题导致可用性降低而提出的解决方案。BASE是下面三个术语的缩写:
基本可用(Basically Available):分布式系统在遇到故障的情况下降低一定的可用性,例如请求返回慢点,活动期间出现等待页面。
软状态(Soft state):在系统交互过程中下游系统拥堵的情况下,给数据加上一个中间状态,例如商城购买商品时候的支付中。
最终一致(Eventually consistent):数据最终要达到一致。比如一笔支付中状态的数据,它最终要么是支付完成,要么是支付失败。支付中的状态存留的时间取决下游支付系统完成这笔支付的时间。
关系数据库的ACID模型
关系数据库的ACID模型要求高一致性和可用性,很难进行分区
原子性(Atomicity):一个事务中所有操作都必须全部完成,要么全部不完成。
一致性(Consistency):在事务开始或结束时,数据库应该在一致状态。
隔离层(Isolation):事务将假定只有它自己在操作数据库,彼此不知晓。
持久性(Durability):一旦事务完成,就不能返回。