当前位置: 首页 > news >正文

BASE理论

BASE 理论是ebay的架构师Dan Pritchett于2008年在CAP 理论(那时CAP理论还未被证明正确性,仅是一个猜想)的基础上提出的。BASE 理论是对 CAP 理论中 AP 方案的一个补充。 Base理论强调即使系统无法做到强一致性(Strong Consistent),但每个应用都可以根据自身业务特点,使用适当的方法来使系统达到最终一致性(Eventually Consistent)。

BASE理论定义

BASE理论是对CAP理论的放松,包含Basically Available(基本可用), Soft State(软状态/柔性事务), Eventual consistent(最终一致性)等三个部分。Basically Available 是指系统在出现故障的时候,允许损失部分可用性,即保证核心可用;Soft State 是指允许系统存在中间状态,而该中间状态不会影响系统的整体可用性。Eventually Consistency 是指系统经过一定时间后,最终能够达到一致的状态。

Basically Available(基本可用)

Basically Available 是指系统出现不可预知的严重故障(如服务器宕机,部分网络中断)时,允许损失部分可用性,即保证核心可用。

Soft state(软状态/柔性事务)

Soft State 是指允许系统存在中间状态,而该中间状态不会影响系统的整体可用性。Soft State 允许系统在多个不同的组件之间存在不一致。

Eventual Consistency(最终一致性)

Eventually Consistency 是指系统经过一定时间后,最终能够达到一致的状态。Soft state只是一个临时状态,对一个系统而来,如果一直是Soft state,那么就是一个错误。所以,对于支持Soft state的系统,仅应在一个时间期限是Soft state。在期限过后,应当保证系统的一致性。也即实现最终一致性。这个时间期限取决于网络延时、系统负载、数据复制、方案设计等因素。

BASE理论与CAP理论

CAP理论是对一个分布式系统的可用性、一致性和分区容忍性三个要素权衡的理论。对分布式系统来说,由于网络分区必然存在,那么只能考虑支持AP或CP。BASE理论是对 CAP 理论中 AP 方案的一个补充。 BASE 理论引入最终一致性的概念,为AP方案提供了理论补充。CAP理论和BASE理论的关系可以用下图表示:
请添加图片描述

BASE理论与ACID理论

ACID理论强调事物的强一致性。ACID是悲观的,在每次操作结束时强制保持一致性。BASE 理论与 ACID 理论截然相反。BASE是乐观的,可接受系统一致性处于不断变化的状态(软状态/柔性事务),以获得可用性和可伸缩性的提高。BASE理论的可用性是通过支持部分失败而非全部失败来实现的。而ACID对部分失败是无法容忍的。对ACID来说,要么全部成功,要么全部失败。

总结

ACID理论强调事务的强一致性,这种事务模型在小数据量的场景下,可以很好的支持。随着系统的规模不断扩大,水平扩展成为系统的必要选择。水平扩展引入数据分区问题,使保证强一致性的代价变大。为权衡一致性、可用性和数据分区等因素,CAP 理论应运而生。根据CAP理论,对一个应用来说,无法同时支持可用性、一致性和分区容忍性。由于分布式系统中组件天然支持分布,所以只能考虑实现一个 AP 方案或一个 CP 方案。 BASE 理论就是对 CAP 理论的 AP 方案的补充。相比 ACID 理论的强一致性,BASE理论接收最终一致性。在支持BASE理论的系统中,系统的一致性处于不断变化的状态(软状态/柔性事务)。因此这种系统的可用性和可伸缩性要远高于基于ACID理论构建的系统。

参考

https://www.cnblogs.com/crazymakercircle/p/13917517.html 分布式事务
https://queue.acm.org/detail.cfm?id=1394128 Base: An Acid Alternative
https://www.cnblogs.com/savorboard/p/base-an-acid-alternative.html Base:一种 Acid 的替代方案
https://www.modb.pro/db/325242 分布式系统的CAP和Base理论
https://segmentfault.com/a/1190000018019595 分布式理论之BASE理论
https://www.zhihu.com/column/p/29083764 BASE: 替代 ACID
https://phoenixnap.com/kb/acid-vs-base ACID vs. BASE: Comparison of Database Transaction Models

相关文章:

  • 家具外贸网站/站长工具pr值查询
  • 网络公司网站首页/做网站的费用
  • 大连企业做网站/世界足球排名前100
  • 查看别人wordpress主题/厦门网站推广费用
  • 成都空间设计公司/苏州seo关键词优化外包
  • 网站建设较好的公司/百度如何快速收录网站
  • 【Go实现】实践GoF的23种设计模式:代理模式
  • Java多线程案例----单例模式[饿汉模式,懒汉模式]
  • 【图解CAN总线】-7-Classic CAN 2.0总线网络“负载率”计算(方法二)
  • 【C++】引用
  • 编译protoc方法名称被自动大写
  • LabVIEW应用程序exe和安装程序的区别
  • 基于HI3516/HI3518/HI3559内部ADC驱动实现
  • swift学习资料2022
  • 百家CMS代码审计
  • SpringSecurity (二) --------- 认证
  • Java设计模式实战 - 02 工厂类获取设备连接器 DeviceConnectorFactory
  • 分享30个有趣的 Python小游戏,我能玩一天