ITPub博客

首页 > 数据库 > 数据库开发技术 > 再谈BASE

再谈BASE

原创 数据库开发技术 作者:安瑞哥是码农 时间:2022-02-22 19:08:13 0 删除 编辑

大家好,我是码农Anryg.

|前言

上一篇写过分布式系统的CAP理论,其实深究细节的话还是挺复杂的,分布式系统为了让大家对CAP有个更加全面的认识,进而延展出了另一个理论:BASE理论。

先来回顾下CAP理论提出的初衷。

任何一个分布式系统设计的初衷都是:可横向扩展和系统高可用,如果再能兼顾一致性就更好了。但是设计者在设计时发现,这3个要求并不能同时满足,而是只能取其2;

其实当你对CAP的理解深刻后会发现,无论是A还是P都是用来描述【可用性】这个指标的,A用来描述对同一份数据的可用性,即高可用;而P是用来描述所有数据的可用性,即总有若干个节点可提供服务;

而对于C来说,其实很难保证(CAP理论实际上忽略了网络延迟),因为任何系统都存在一定程度的【网络延迟】,所以严格意义上的强一致性是不存在的(如果数据只有一个副本的系统除外),但是系统可以让用户(或者说客户端),对外表现出【强一致性】。例如当一份数据写入系统时,选择当所有节点都同步(一段时间后)了该份数据后再对外提供服务(此时,系统满足的是CA属性);而如果选择只是写入的第一个节点的数据对外提供服务,那么此时,系统满足的是CP属性;

|什么是BASE

很多同学可能知道CAP,但是对于BASE可能并不熟悉。其实也不是高深莫测的理论,它是CAP理论的一个延展,当你对CAP有一定研究之后,再来看BASE,会有一种豁然开朗的顿悟。

BASE虽然是英文4个字母,但其实说的却是3个层面的意思:

  1. 基本可用(Basically Available):意思是即便出现部分数据节点的故障,可能导致一部分数据无法查询到,但是不影响其他数据依然可以提供服务。对应CAP理论中的P,即就算部分分区出现故障(网络原因或者宕机等等)也基本不影响整个分布式系统对外提供服务的能力;


  2. 软状态(Soft State):什么是【软】状态,【软】就是节点间数据短暂的不一致,这个【软】是随着时间而变化的,这里针对的是CAP中的A。我们知道A的本质就是数据冗余,即同一份数据要存到多个节点中,而在现实中,系统总会出现或多或少的网络延迟,因此节点间在数据同步过程中会存在【时间差】,而这个【时间差】就是这里的软状态;


  3. 最终一致性(Eventual Consistency):上面说到【软】状态,那么这个最终一致性就是一种【硬】状态,即【持久不变】,不会随着时间而变化。CAP中的C说的是数据的【强一致性】,即任何时候数据都是一致的,但是如果一个同时也选择了A的分布式系统,因为存在网络延迟的关系,其实这个C是不可能保证的,对于那些对【强一致性】要求不高的系统,其实最终一致性才是他们的诉求。

总结

如果说CAP是设计者对一个分布式系统的抱有的理想,那BASE则是所有分布式系统必须要面对的现实。

这篇文章的内容不多,相对CAP,BASE可能更能让你对分布式的设计理念有个更加深入的理解。


原文作者:安瑞哥是码农;如有侵权,请联系管理员删除。

下一篇: 谈谈CAP
请登录后发表评论 登录
全部评论

注册时间:2022-02-16

  • 博文量
    228
  • 访问量
    115449