分布式学习三:BASE理论

释放双眼,带上耳机,听听看~!

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

转自仙士可博客www.php20.cn

服务架构

从内核角度分析 listen() 系统调用的 backlog 参数作用

2022-3-2 15:18:11

服务架构

jenkins通过supervisor配置守护进程

2022-3-2 15:20:48

搜索