Ba理论
前⾔
我们说,CAP不可能同时满⾜,⽽分区容错是对于分布式系统⽽⾔,是必须的。最后,我们说,如果系统能够同时实现CAP是再
好不过的了,所以出现了BASE理论,今天就来讲讲Ba理论。
⼀、什么是Ba理论
BASE:全称:BasicallyAvailable(基本可⽤),Softstate(软状态),和Eventuallyconsistent(最终⼀致性)三个短语的缩
写,来⾃ebay的架构师提出。
Ba理论是对CAP中⼀致性和可⽤性权衡的结果,其来源于对⼤型互联⽹分布式实践的总结,是基于CAP定理逐步演化⽽来
的。其核⼼思想是:既是⽆法做到强⼀致性(Strongconsistency),但每个应⽤都可以根据⾃⾝的业务特点,采⽤适当的⽅式来使系统
达到最终⼀致性(Eventualconsistency)。
⼆、BasicallyAvailable(基本可⽤)
什么是基本可⽤呢?假设系统,出现了不可预知的故障,但还是能⽤,相⽐较正常的系统⽽⾔:
(1)响应时间上的损失:正常情况下的搜索引擎0.5秒即返回给⽤户结果,⽽基本可⽤的搜索引擎可以在1秒作⽤返回结果。
(2)功能上的损失:在⼀个电商⽹站上,正常情况下,⽤户可以顺利完成每⼀笔订单,但是到了⼤促期间,为了保护购物系统的稳定性,
部分消费者可能会被引导到⼀个降级页⾯。
三、Softstate(软状态)
什么是软状态呢?相对于原⼦性⽽⾔,要求多个节点的数据副本都是⼀致的,这是⼀种“硬状态”。
软状态指的是:允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可⽤性,即允许系统在多个不同节点的数据副本存
在数据延时。
四、Eventuallyconsistent(最终⼀致性)
上⾯说软状态,然后不可能⼀直是软状态,必须有个时间期限。在期限过后,应当保证所有副本保持数据⼀致性。从⽽达到数据的最
终⼀致性。这个时间期限取决于⽹络延时,系统负载,数据复制⽅案设计等等因素。
稍微官⽅⼀点的说法就是:
系统能够保证在没有其他新的更新操作的情况下,数据最终⼀定能够达到⼀致的状态,因此所有客户端对系统的数据访问最终都能够
获取到最新的值。
五、⽽在实际⼯程实践中,最终⼀致性分为5种
1.因果⼀致性(Causalconsistency)
指的是:如果节点A在更新完某个数据后通知了节点B,那么节点B之后对该数据的访问和修改都是基于A更新后的值。于此同时,和节
点A⽆因果关系的节点C的数据访问则没有这样的限制。
2.读⼰之所写(Readyourwrites)
这种就很简单了,节点A更新⼀个数据后,它⾃⾝总是能访问到⾃⾝更新过的最新值,⽽不会看到旧值。其实也算⼀种因果⼀致性。
3.会话⼀致性(Sessionconsistency)
会话⼀致性将对系统数据的访问过程框定在了⼀个会话当中:系统能保证在同⼀个有效的会话中实现“读⼰之所写”的⼀致性,也就是
说,执⾏更新操作之后,客户端能够在同⼀个会话中始终读取到该数据项的最新值。
4.单调读⼀致性(Monotonicreadconsistency)
单调读⼀致性是指如果⼀个节点从系统中读取出⼀个数据项的某个值后,那么系统对于该节点后续的任何数据访问都不应该返回更旧的值。
5.单调写⼀致性(Monotonicwriteconsistency)
指⼀个系统要能够保证来⾃同⼀个节点的写操作被顺序的执⾏。
然⽽,在实际的实践中,这5种系统往往会结合使⽤,以构建⼀个具有最终⼀致性的分布式系统。实际上,不只是分布式系统使⽤最终⼀
致性,关系型数据库在某个功能上,也是使⽤最终⼀致性的,⽐如备份,数据库的复制过程是需要时间的,这个复制过程中,业务读取到的
值就是旧的。当然,最终还是达成了数据⼀致性。这也算是⼀个最终⼀致性的经典案例。
六、总结
BASE理论⾯向的是⼤型⾼可⽤可扩展的分布式系统,和传统事务的ACID是相反的,它完全不同于ACID的强⼀致性模型,⽽是
通过牺牲强⼀致性来获得可⽤性,并允许数据在⼀段时间是不⼀致的。
本文发布于:2022-11-12 06:14:34,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/88/2842.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |