一文理解CAP理论和BASE理论

👏作者简介:大家好,我是笙一X,java大二练习生,喜欢算法和Java相关知识。

📕正进行的系列:算法 、JUC从入门到成神、Spring、运维、分布式

CAP

        对于分布式系统,我们需要了解到其CAP理论: Consistency(一致性)、Availability(可用性)、Partition Tolerance(分区容错性)。


一致性(Consistency):分布式系统中的任意节点,数据必须一致。

可用性(Availability):访问分布式节点时,读和写功能必须都能成功,服务可用并且响应时间正常。

分区容错性(Partition Tolerance):当节点出现分区问题(因为网络故障或者其它原因使得部分节点和其它节点失去连接)时,仍然能够对外提供服务。


        而对于这三个特性,CAP指出,三者只能满足其二,不能同时满足所有。

如何解释?

对于CA:如果此时需要让系统可用(可读可写),并且保证数据需要一致,那么节点间的通信必须存在,不可出现分区状态。

对于CP:对于分区容错的情况下,要使得数据一致,便不可以对数据进行操作。

对于AP:如果此时我们拥有可用性和分区容错性,在分区下读写,那么节点之间便不能进行数据同步,使得数据不一致。

BASE

        BASE理论是对CAP问题的一种解决思路,它不能强一致让CAP完全同时实现,但可以通过三个思想解决一些问题:


基本可用(Basically Available):在分布式系统中如果出现故障,可以损失部分可用性,只需保证核心可用。

软状态(Soft State):在一定的时间内允许出现中间状态,如暂时的数据不一致。

最终一致性(Eventually Consistent):软状态结束后,最终数据一致即可。


        简单解释就是对于分区状态下的CA矛盾的解决:要保证一致性需要牺牲可用性,但是不用完全牺牲,如只读。保证高可用也不用完全牺牲一致性,可以临时出现不一致状态,最后让数据恢复到一致状态即可。

场景

在我们面对分布式事务问题时,借鉴CAP理论和BASE理论进行解决:

1.CP模式:各个子事务执行完成后互相等待,同时提交或回滚的强一致。但是因为一致占用着资源,此时可用性属于弱状态。-------参考Seata的XA模型

2.AP模式:各个子事务可以独立提交或回滚,可能导致结果不一致。但是可以在结束后弥补,进行数据的恢复,实现最终一致。-------参考Seata的AT模型

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值