读书笔记-微服务分布式事务-03

2020-07-25  本文已影响0人  愤怒的老照

1 分布式事务基础

1.1 CAP

https://www.jianshu.com/p/2f6bd7da9c9a

需要注意的:

1.2 BASE

BASE 是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写。是对CAP中AP的一个扩展

BASE解决了CAP中理论没有网络延迟,在BASE中用软状态和最终一致,保证了延迟后的一致性。BASE和 ACID 是相反的,它完全不同于ACID的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。

2 分布式事务

下面是几种常见的方案(参考:https://blog.csdn.net/bjweimengshu/article/details/86698036

2.1 2PC

简单来说,是将事务的提交操作分成了prepare和commit两部分。代表2pc分布式事务的有XA Transactions,XA分为两阶段:
第一阶段:

image.png
发起方向协调者发送请求,协调者首先会分别向参与节点发送prepare请求,问一下这些节点能不能处理成功了,此时这些参与者一般会开始执行本地事务,但是执行完后并不会立马提交,而是返回结果代表已经就绪。

第二阶段:正常

image.png
如果都返回可以处理,那么协调者就会向所有参与者发送commit,此时参与者就可以提交本地事务了,最终协调者返回ack给业务方,代表分布式事务成功。

第二阶段:异常
如果有节点反馈不能执行事务,此时协调者会发送rollback消息,通知各个参与者回滚,释放资源,并向业务方返回分布式事务处理失败结果

2.1.1 优点

2.1.2 缺点

2.2 TCC

本文将了解一个跟2pc很像的事务提交协议,tcc事务提交协议,全称是:try-confirm-cancel,也是一个分为两个阶段的事务提交协议,如图所示

image

tcc事务提交协议分为两个阶段:

2.2.1 tcc与2pc有什么区别

tcc的过程和2pc非常像,一阶段prepare,二阶段confirm/cancel,但是还是有很大的不同的。

2pc的两个阶段对开发人员是没有感知的,开发人员仍对资源进行单一的更新操作。而tcc的try-confirm-cancel需要开发人员提供一个业务逻辑来维护事务提交,也就是业务入侵。

2.3 可靠消息最终一致性

消息发送一致性:是指产生消息的业务动作与消息发送的一致。也就是说,如果业务操作成功,那么由这个业务操作所产生的消息一定要成功投递出去(一般是发送到kafka、rocketmq、rabbitmq等消息中间件中),否则就丢消息。
如何实现数据库操作和消息发送的一致性?有两种方案:一种是基于MQ的事务消息,另一种是

BE2326B0-FC19-4620-BD2E-D34A32B8A405.png

事务消息的逻辑,由发送端 Producer进行保证(消费端无需考虑)

上一篇 下一篇

猜你喜欢

热点阅读