CAP定理和Base理论

CAP定理

一个分布式系统不可能同时知足C (Consistency)一致性 ,A(Availiabibity)可用性,P(Partition tolerance)容错性。  数据库

 一致性

  不一致分布式系统的数据都有几个不等的备份,操做数据的时候,不一样的节点拿到了不一样的副本,同时对这些副本进行操做,而且都成功了,这个时候,对这一部分数据就会形成不一致,也就形成了分布式系统的不一致性。并发

    所谓一致性,就是针对某数据的操做进行了更新操做后,全部使用该数据的用户均可以获得最新的 值,就能够称之为强一致性。异步

可用性

指的就是系统的效率问题,熊不能太慢,必须是在可承受范围以内的。分布式

容错性

系统发生了故障,保证对外的服务不会间断,最简单的就是备份,某个备份坏了以后,须要经过其余备份获取正确的数据保证对外服务正确。高并发

三者不可兼得,仔细的推敲一下以上三个方便,就能感受到,这三个方向是相互制约的,莫一方面作到了极致,天然就会影响其余两个方面作的很好。性能

        例如,若是须要作的强一致性,就必须保证所作的操做对全部的副本都起做用了之后才能对外返回,这么一来可用性(效率)上天然就会打折扣。若是不考虑容错性,那么就不须要对数据搞那么多的副本,可用性和一致性效率能够提升,可是就会增长系统挂掉的风险。因此三者是相互矛盾的,在设置或者考虑系统的设计和开发时,须要综合考虑三者之间所占的一个权重。spa

Base理论

为达成分布式系统开发,三者互相权衡,相互妥协的一个理论。牺牲高一致性,得到可用性或可靠性:
Basically Available基本可用。支持分区失败(e.g. sharding碎片划分数据库)
Soft state软状态 状态能够有一段时间不一样步,异步。
Eventually consistent最终一致,最终数据是一致的就能够了,而不是时时高一致。设计

 牺牲了部分一致性,提升了性能和可靠程度。一致性也能够是实时一致也能够是最终一致,这里牺牲一致性也并不是不要一致性,而是选择最终一致性,这样一来,虽说中间状态可能不一致,可是最终,数据仍是一致的,也不会影响系统最终的准确度。开发

基本可用:再出现个故障或者高并发的时候,牺牲部分体验,但最终保证可用。同步

弱状态:容许存在中间状态

最终一致性:数据副本最终保证数据一致,但不是实时一致,容许副本间同步存在延迟。

 

BASE理论是CAP定理下相互妥协的一个结果,保证开发可用分布式系统。

相关文章
相关标签/搜索