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

计算机科学 计算机科学 1804 人阅读 | 0 人回复

维基百科:

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

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

CAP的延伸发展

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

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

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

image.png

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

是一种指导思想。

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

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

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

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

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

再说一致性

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

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

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

common_log.png 转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-247-1-1.html

关注下面的标签,发现更多相似文章

文章被以下专栏收录:

    黄小斜学Java

    疯狂的字节X

  • 目前专注于分享Java领域干货,公众号同步更新。原创以及收集整理,把最好的留下。
    包括但不限于JVM、计算机科学、算法、数据库、分布式、Spring全家桶、微服务、高并发、Docker容器、ELK、大数据等相关知识,一起进步,一起成长。
热门推荐
[若依]微服务springcloud版新建增添加一个
[md]若依框架是一个比较出名的后台管理系统,有多个不同版本。
[CXX1300] CMake '3.18.1' was not
[md][CXX1300] CMake '3.18.1' was not found in SDK, PATH, or
海康摄像头接入 wvp-GB28181-pro平台测试验
[md]### 简介 开箱即用的28181协议视频平台 `https://github.c