BASE理论
BASE:全称:Basically Available(基本可用),Soft state(软状态),和 Eventually consistent(最终一致性)三个短语的缩写
它在CAP定理的基础上,让每个业务根据自身的特点,采用适当的方式让整个系统实现 "最终一致性"
Basically Available(基本可用)
基本可用是,系统的部分服务出现问题后,其他服务能够继续提供服务,但是会影响一部分可用性
影响的可用性为:
1: 响应时间损失,一般响应几十-几百毫秒,基本可用的服务可能会在1-5秒内返回数据
2:功能损失,在大并发下,将关停一部分不重要的服务,例如在双十一时,关闭了退货退款通道
Soft state(软状态)
允许系统中的数据存在中间状态,并认为该状态不影响系统的整体可用性,即允许系统在多个不同节点的数据副本存在数据延时。
例如订单退款时,先将订单状态置为:"退款中",同时请求支付中心服务进行退款,直到退款成功后,置为退款成功
Eventually consistent(最终一致性)
基于软状态,如果存在一个中间状态,那就需要有一个时间期限来完成最终一致性
例如退款中,一般退款要7-15个工作日,那就设置为15天过期,过期后双方同步状态,如果退款成功,双方都更新为退款成功,否则都更新为退款失败(其他业务可能不是7-15个工作日,可能就30秒的超时,或者3秒)
最终一致性分类
1:因果一致性(Causal consistency)
如果节点 A 在更新完某个数据后通知了节点 B,那么节点 B 之后对该数据的访问和修改都是基于 A 更新后的值,并且不能丢失A更新后的值.如果没有通知C,则C没有这个限制
2:读己之所写(Read your writes)
节点 A 更新一个数据后,它自身总是能访问到自身更新过的最新值,而不会看到旧值
3:会话一致性(Session consistency)
系统能保证在同一个有效的会话中实现 “读己之所写” 的一致性,也就是说,执行更新操作之后,客户端能够在同一个会话中始终读取到该数据项的最新值.
4: 单调读一致性(Monotonic read consistency)
如果一个节点从系统中读取出一个数据项的某个值后,那么系统对于该节点后续的任何数据访问都不应该返回更旧的值.
5:单调写一致性(Monotonic write consistency)
一个系统要能够保证来自同一个节点的写操作被顺序的执行.(防止并发写)
其他
在系统的实践中,可以将多个一致性分类结合起来构建具有最终一致性的系统
在之后的分布式系统中,都是通过一致性和可用性之间的取舍权衡,产生各种各样的一致性协议实现分布式系统
本文为仙士可原创文章,转载无需和我联系,但请注明来自仙士可博客www.php20.cn