程序员潇然 发表于 2022-12-9 23:50:08

什么是分布式系统BASE理论简介说明

维基百科:

`https://en.wikipedia.org/wiki/Eventual_consistency`

> Eventually-consistent services are often classified as providing BASE semantics (basically-available, soft-state, eventual consistency), in contrast to traditional ACID (atomicity, consistency, isolation, durability)

* **Basically available** : reading and writing operations are available as much as possible (using all nodes of a database cluster), but might not be consistent (the write might not persist after conflicts are reconciled, and the read might not get the latest write)
* **Soft-state** : without consistency guarantees, after some amount of time, we only have some probability of knowing the state, since it might not yet have converged
* **Eventually consistent** : If we execute some writes and then the system functions long enough, we can know the state of the data; any further reads of that data item will return the same value

## 简介

基本可用:

字面意思,基本可以使用,比如运行的稍微慢一些,这叫做基本可用,如果说卡住半天不动,这叫做基本不可用。比如淘宝购物,如果是大促期间,部分人无法下单要等一会儿,或者说不能立可退款,可以认为是基本可用,但是如果大家下单后都不能付款,那就不是基本可用,那就是部分不可用,就是约等于不可用。

软状态:

指的是一种过渡状态,不需要针对字眼过分解读,从不一致到一致性有一个过程,系统也有一个过度的逐步趋于一致的过程。

最终一致性:

这个词,有两层含义,最终会达成一致;中间会不一致;

如果说无法最终达成一致性,就不算是达成最终一致性。

最终一致性可以认为是基于工程实践,在不同的场景下选择的对一致性的容忍程度。

对于很难(或者有些场景无法)达到一致性的妥协。

base理论是在cap理论的基础上发展的,cap描述了分布式系统中数据一致性,可用性,分区容错性之间的制约关系。当你选择其中两个的时候,就不得不对另外一个做出一定的牺牲。

base理论则是对cap理论的实际应用,也就是在分区和副本存在的前提下,通过一定的系统设计方案,放弃强一致性,实现基本可用,这是大部分分布式系统的选择。在这个前提下,如何把基本可用做到最好,则是我们追求的目标。

**BASE换个角度理解的话,就是在保障CAP中AP可用的情况下,尽可能的保障C。**

### 相关资料

**Eventual Consistency Today: Limitations, Extensions, and Beyond: How can applications be built on eventually consistent infrastructure given no guarantee of safety?**

`https://dl.acm.org/doi/10.1145/2460276.2462076`

**BASE: An Acid Alternative: In partitioned databases, trading some consistency for availability can lead to dramatic improvements in scalability.**

`https://dl.acm.org/doi/10.1145/1394127.1394128`

**Principles of Eventual Consistency**

`https://www.nowpublishers.com/article/Details/PGL-011`

**Understanding Eventual Consistency**

`https://www.microsoft.com/en-us/research/publication/understanding-eventual-consistency/`

**Eventually consistent**

`https://dl.acm.org/doi/10.1145/1435417.1435432`

`https://www.researchgate.net/publication/335106736_Eventually_Consistent`

在CAP`https://www.crazybytex.com/thread-246-1-1.html`中有详细的说明关于CAP三者之间的选择问题。

### CAP的延伸发展

因为是分布式系统,绝大多数情况下需要对分区情况进行容错,也就是可以接受网络分区,只是容忍度的问题,那就只剩下CA的选择,而对于C来说本身就很难达到绝对的强一致性,所以在保障A的前提下,尽可能的去达成一致性C,就成了很多工程实践的选择。

BASE理论就是这一思考过程的一种理论研究。

换句话说,BASE其实就是已经选择了CA,但是还希望尽可能的在各种场景下保障C,BASE 理论是 CAP 理论中的 AP 的延伸,是对互联网大规模分布式系统的实践总结,强调可用性

!(data/attachment/forum/202212/11/215717qo9pz3p4zohm3hmb.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "image.png")

BASE 理论是一种处理分布式事务的思想,没有具体的操作步骤,也就是说他并不是具体的算法。

是一种指导思想。

BASE 理论是对 CAP 中一致性和可用性权衡的结果,它来源于对大规模互联网分布式系统实践的总结,是基于 CAP 定理逐步演化而来的。

它的核心思想是,如果不是必须的话,不推荐实现事务或强一致性,鼓励可用性和性能优先,根据业务的场景特点,来实现非常弹性的基本可用,以及实现数据的最终一致性。

BASE 理论主张通过牺牲部分功能的可用性,实现整体的基本可用,也就是说,通过服务降级的方式,努力保障极端情况下的系统可用性。

如果往简单了说,BASE就是分布式系统实践下的一种较为流行的一种实践,这种实践是被证明靠谱的,也体现了分布式系统的复杂,毕竟有诸如FLP不可能理论的存在。

兜兜转转,妥协在妥协的一种经验。

### 再说一致性

最终一致性强调的是最终能够达成结果,比如多台机器副本,如果只是某一个节点暂时无法写入数据,将数据暂时缓存下来,然后重试,如果后面最终成功,这就是达到了最终一致性。

秒杀系统将用户的请求进行缓存,通过MQ的形式进行削峰填谷,也是一种形式的最终一致性,虽然无法立刻进行响应,但是系统却仍旧可以不断地处理这些请求,这些请求也最终会得到对应的计算结果。

所以最终一致性,对于可以接受他的这些情况来说,有很大的实践指导意义,对于分布式系统的设计都很有帮助。

!(data/attachment/forum/202206/16/141330jha7st9soow8772i.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/300 "common_log.png")
`转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-247-1-1.html `
页: [1]
查看完整版本: 什么是分布式系统BASE理论简介说明