暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

CAP和BASE理论

程序猿研习社 2021-09-06
573


01

CAP


CAP理论告诉我们,一个分布式系统不可能同时满足一致性、可用性、分区容错性,最多只能保证两个;

  • C(consistency)一致性

  • A(availability)可用性

  • P(partition tolerance)分区容错性


一致性

在分布式环境中,多个数据副本之间能否保持一致的特性,比如说对一个节点上的数据进行更新后,另外一个节点上的数据是否能够得到更新,如果第二个节点上获取的依旧是老数据,这就出现了数据不一致的问题(那用户不蒙蒙哒了么)


可用性

系统必须一直处于可用的状态,简单点说就是:别管用户什么时候访问你的系统,都是好使的;


分区容错性

因为分布式系统各个节点可能部署在不同的网络分区上,而且各个节点之间还要保持通讯,其中任何网络分区出现故障的时候,都要保证系统对外能提供一致性和可用性的服务,这就是分区容错性,举个例子如下图:


从CAP理论可以看出,一个分布式系统不可能同时满足以上3点,另外,分区容错性对分布式系统来说,这是最基本的要求,原因是:既然是分布式系统,那么系统的中的组件必然会部署到不同的网络节点,那么网络发生异常这是很正常的(购物网站系统中某一个服务或者组件的调用发生异常了,整个网站就无法访问了,这样的话太扯了不是吗),因此架构师的经历往往集中在,如何根据业务特点做到一致性和可用性之间的平衡,也就有了后来的BASE理论...


02


BASE


BASE理论是对于分布式系统中一致性和可用性权衡得到的结果,其来源于大规模互联网系统分布式实践的经验,有eBay架构师提出;

  • BA(basic available)基本可用

  • S(soft status)软转态

  • E(eventually consistency)最终一致性


BASE理论的核心点在于,即使无法做到强一致性,但每个应用都应该结合自身的业务特点,采取一定的措施做到最终一致性;


基本可用

指的是分布式系统出现一些故障的时候,可以损失部分功能(上面那个图,用户无法下单,但可以浏览)


软状态

指的是系统中的数据存在中间状态,并认为该状态不会影响系统整体的可用性,即:允许系统在不同节点上的数据同步存在延迟;


最终一致性

最终一致性强调的是,在经过一段时间后,系统在不同节点上的数据会达到一致;(想象一下mysql的主从同步,就是最终一致性了吧)


总的来说BASE理论面向的是大型高可用可扩展的分布式系统,它强调的是通过牺牲强一直性来保证系统的高可用,并且允许数据在一段时间(根据实际情况而定,有可能毫秒延迟,也有可能分钟级别等等)内是不一致的,但最终能达到一致的状态;


03


思考


针对上面聊的我们再简单讨论一下(只针对这个例子的结构),笔者画了一个简单的系统图如下:


高可用

用户那层通过负载均衡等一些策略就可以保证,请求节点1发现挂了,那就请求节点2,而数据层可以通过集群方式控制;

分区容错性

业务系统调用户系统,由于网络不通导致失败,可以通过熔断机制等等来控制(直接给用户返回一个失败的页面)

一致性

网3里的mysql主从之间同步,是弱一致性,业务不用从库了,只用一个主库,那这没问题了,数据也能达到强一致性(因为就主库自己么),但是此时系统的高可用性是不是也下来了你想想看;







文章转载自程序猿研习社,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论