欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

理论篇-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理论思维导图
理论篇-BASE理论
参考文献:

[1] 韩健. 分布式协议与算法实战[M]. 极客时间, 2020.