理论篇-BASE理论
程序员文章站
2022-07-14 12:41:48
...
分布式理论之BASE理论
01 | BASE理论
1、基本可用(Basically Available)
1. 当分布式系统出现不可预知的故障时,允许损失部分功能的可用性,保障核心功能的可用性。
2、软状态(Soft state)
1. 一种过渡状态,指不同节点间,数据副本存在短暂的不一致。
3、最终一致性(Eventually)
1. 系统中所有的副本在经过一段时间的同步后,最终能够达到一个一致的状态。也就说,在数据一致性上,存在一个短暂的延迟。
02 | 基本可用-4板斧
1、流量削峰
1. 利用各种手段,例如购票中的分时段、分区域,将访问请求错开,削弱请求峰值。
2、延迟响应
1. 当出现超出系统处理能力的突发流量的情况下,通过牺牲响应时间的可用性,保障核心功能的可用性。
3、体验降级
1. 先出现海量突发流量,系统过载时,可以通过牺牲某些非核心功能或者用户体验,来保障核心功能的运行。
4、过载保护
1. 将超过系统负载的请求放到指定队列中排队处理,若请求等待超时,则直接拒绝超时请求;若队列已满,则清除队列中一定数量的排队请求。
03 | 最终一致性
1、使用场景考量
1. 如果业务的某功能无法容忍一致性的延迟(比如分布式锁对应的数据),则使用强一致性;
2. 如果能容忍短暂的一致性延迟(例如QQ状态),可以考虑最终一致性。
2、实际工程的实践方式
1. 以最新写入的数据为准,例如AP模型的KV存储采用的就是这种方式;
2. 以第一次写入的数据为准,例如不希望存储的数据被更改。
3、具体的实现方式
1. 读时修复:在读取数据时,检测到数据不一致时,进行修复。
2. 写时修复:在写入数据,检测到数据不一致时,进行修复。 可以这么理解,写时修复,写失败时,将数据缓存到本地磁盘上,然后周期性的重传,本质上,就是失败重传。
3. 异步修复:这个是最常用的方式,通过定时对账检测副本数据的一致性,并修复。
4. 小结:写时修复不需要做数据一致性对比,性能消耗较低,推荐使用。读时修复和异步修复需要做数据一致性对比,性能消耗较多,使用时要优化一致性对比算法。
04 | 内容小结
1、BASE理论的核心思想
1. 如果不是必须的话,不推荐实现事务或强一致性,鼓励可用性和性能优先,根据业务场景特点,来实现非常弹性的基本可用,以及实现数据的最终一致性。
2、BASE的理论主张
1. 通过牺牲部分功能的可用性,实现整体的基本可用,也就是说,通过服务降级的方式,努力保障极端情况下的系统可用性。
3、BASE 和 ACID 的区别
1. ACID 理论是传统数据库常用的设计理念,追求强一致性模型。
2. BASE 理论支持的是大型分布式系统,通过牺牲强一致性获得高可用性。
3. BASE 理论在很大程度上,解决了事务型系统在性能、容错、可用性等方面痛点。此外,在NoSQL中应用广泛。
4、强调
1. 对于任何集群而言,不可预知的故障的最终后果,都是系统过载。
2. 如何设计过载保护,实现系统在过载时的基本可用,是开发和运营互联网后台的分布式系统的重中之重。
03 | 思维导图
1、BASE理论思维导图
参考文献:
[1] 韩健. 分布式协议与算法实战[M]. 极客时间, 2020.
上一篇: 介绍一种不同流式标签的实现方式