分布式事物详解

Base理论

eBay的架构师Dan Pritchett源于对大规模分布式系统的实践总结,在ACM上发表文章提出BASE理论,BASE理论是对CAP理论的延伸,核心思想是即使无法做到强一致性(Strong Consistency,CAP的一致性就是强一致性),但应用可以采用适合的方式达到最终一致性(Eventual Consitency)

分布式事物又一个很著名的理论就是CAP理论

CAP理论

C : consistency(一致性)
A : availability(可用性)
P :partition tolerance(分区容错性)
基本可用
基本可用是指分布式系统在出现故障的时候,允许损失部分可用性,即保证核心可用。

电商大促时,为了应对访问量激增,部分用户可能会被引导到降级页面,服务层也可能只提供降级服务。这就是损失部分可用性的体现

一致性

  1. 强一致性
  2. 弱一致性
  3. 最终一致性
强一致性:更新之后所有从副本取到的都是最新值
弱一致性:更新之后其他副本不能立即取到最新值
最终一致性:有些副本刷新了,有些副本没有刷新,但是最后总是会刷新的,这其中DNS系统就是一个很好的例子

举例

强一致性:电商系统交易购买的时候,需要判断库存,这是需要强一致性的

最终一致性是指系统中的所有数据副本经过一定时间后,最终能够达到一致的状态。弱一致性和强一致性相反,最终一致性是弱一致性的一种特殊情况

弱一致性:电商商品详情显示还有库存,可是下单的这一瞬间没有了库存
最终一致性:比如电商系统在下单的时候需要扣除券,优惠等信息,都是通过消息队列发送到相应的系统里面去,有各个子系统去消费这些队列,来保证最终一致性

强一致性

mysql的XA协议(2pc:二次提交协议)

这里写图片描述

3pc:三次提交协议

这里写图片描述

paxos算法

采取的投票的方式来决定每一个环节的选举,可以让每一次请求都选举出结果来,只要票数超过一半则视为通过,这也是在法庭上经常用的手段,就是投票,这是符合人之常情的

实例分析
我们是怎么利用Mq来达到最终一致的呢?下面让我们来一起进行详细的分析:

订单业务分析
首先,拿我们上面提到的订单业务举例:

在我们进行加订单的过程中同时插入logA(这个过程是可以做本地事务的)
然后可以异步读取logA,发mqA
B端接收mqA,同时减少库存,B这里需要做幂等(避免因为重复消息造成的业务错乱)
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值