分布式事务
产生场景
1、微服务架构即典型的分布式系统,跨JVM进程产生分布式事务
2、单系统访问多数据库实例,资金数据库和资产数据库,通过不同的数据库连接去操作数据,跨数据库实例产生分布式事务
3、多服务访问同一数据库实例,两个不同的服务持有不同的数据库连接去操作数据,跨JVM进程产生分布式事务
分布式事务基础理论
CAP理论

参考:https://www.cnblogs.com/mingorun/p/11025538.html
BASE理论

参考:https://segmentfault.com/a/1190000018019595
分布式事务解决方案
2PC原理

参考:https://www.cnblogs.com/qdhxhz/p/11167025.html
XA方案

参考:https://cloud.tencent.com/developer/article/1547146
Seata方案

Seata AT 模式参考:http://seata.io/zh-cn/docs/dev/mode/at-mode.html
Seata原理参考:https://www.javazhiyin.com/41313.html
TCC方案





可靠消息最终一致性

1、本地事务与消息发送的原子问题
事务发起方在本地事务执行成功后消息必须成功发出,否则丢弃消息
2、事务参与方接收消息的可靠性问题
事务参与方必须能够从消息队列接收到消息,如果失败则重复接收消息
3、消息重复消费的问题
实现事务参与方的方法幂等性
RocketMQ事务消息方案
该方案主要是解决Producer端的消息发送和本地事务执行的原子性问题即问题1

步骤二发送的消息并不能被订阅方订阅到
步骤五为事务回查主要是解决步骤四可能出现的网络问题
步骤七改变消息状态使得订阅方可以订阅到消息
解决事务参与方接收消息的可靠性问题即问题2则利用了消息中间件的ack机制
参考:https://gitee.com/NuLiing/reliable-message
最大努力通知

1、消息重复通知机制,利用MQ的ack机制
2、通知结果主动查询机制
该方案的业务场景是完成核心业务后的通知事务,即将业务结果可靠的通知出去,如注册账号(核心业务通知发起方)发邮件(通知接收方)
该方案对一致性要求最低,适用于一些最终一致性时间敏感度低的业务
参考:https://gitee.com/NuLiing/cn-ben

浙公网安备 33010602011771号