CAP定理Base理论
Posted Java乐分享
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了CAP定理Base理论相关的知识,希望对你有一定的参考价值。
CAP定理
CAP理论为:一个分布式系统最多只能同时满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)这三项中的两项
一致性(Consistency)
一致性指(all nodes see the same data at the same time),即更新操作成功并返回客户端完成后,所有节点在同一时间的数据完全一致,不能存在中间状态
强一致性:所有节点在同一时间的数据完全一致。 要么一起成功,要么一起失败,不会存在说A先把数据插入,如果B失败在把A的数据删除。应该是当B成功后然后一起把数据插入AB
弱一致性:允许存在部分数据不一直
最终一致性:允许存在中间状态,只要求经过一段时间后,数据最终是一致的,则称之为最终一致性
可用性(Availability)
可用性是指(Reads and writes always succeed),系统提供的服务必须一直处于可用的状态,对于用户的每一个操作请求总是能够在有限的时间内返回结果
分区容错性(Partition tolerance)
分区容错性指(the system continues to operate despite arbitrary message loss or failure of part of the system),即分布式系统在遇到某节点或网络分区故障的时候,仍然能够对外提供满足一致性和可用性的服务
一般情况都会选择分区容错性加一致性(CP系统)或者分区容错性加可用性(AP系统)
CP表示强一致性系统:常用于金融级系统
AP表示高可用系统
CAP权衡
通过CAP定理,我们知道无法同时满足一致性、可用性、和分区容错性这三个特性,那么要舍弃哪个呢?
对于多数大型互联网应用的场景,主机众多、部署分散,而且现在的集群规模越来越大,所以节点故障、网络故障是常态,而且要保证服务可用性达到N个9(99.999999% ),即保证P和A,舍弃C(退而求其次保证最终一致性)。虽然某些地方会影响客户体验,但没达到造成用户流程的严重程度。
对于涉及到钱财这样不能有一丝让步的场景,C必须保证。网络发生故障宁可停止服务,这是保证CA舍弃P。还有一种是保证CP舍弃A,例如网络故障是只读不写
孰优孰略,没有定论,只能根据场景定夺,适合的才是最好的
Base理论
eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)。
基本可用(Basically Available):基本可用是指分布式系统在出现故障的时候,允许损失部分可用性。
即保证核心可用。电商大促销时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只降级服务。这就是损失部分可用性的体现
软状态(Soft State):软状态是指允许系统存在中间节点,而该中间状态不会影响系统整体可用性。
分布式存储中一般一份数据至少会有三个副本,允许不同节点间副本同步的延时就是软状态的体现。mysql Peplication的异步复制也是一种体现
最终一致性(Eventual Consistency):最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。
弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况
ACID和BASE的区别与联系
ACID是传统数据库常用的设计理念,追求强一致性模型。BASE支持的是大型分布式系统,提出通过牺牲强一致性获得高可用性。
ACID和BASE代表了两种截然相反的设计哲学,在分布式系统设计的场景中,系统组件对一致性要求是不同的,因此ACID和BASE又会结合使用。
BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物ACID特性是相反的。通过牺牲强一致性来获得可用性,允许数据在一段时间内是不一致的,但最终达到一致状态。实际应用中,会在对数据库操作进行本地事务(ACID特性)+Eventually consistent最终一致性(BASE理论)结合使用。
扫描二维码
获取更多精彩
Java乐分享
往期精选
热文
丨更多
热文
丨更多
热文
丨更多
热文
丨更多
热文
丨更多
以上是关于CAP定理Base理论的主要内容,如果未能解决你的问题,请参考以下文章