分布式事物详解

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这里需要做幂等(避免因为重复消息造成的业务错乱)

猜你喜欢

转载自blog.csdn.net/baixiaoshi/article/details/78964844