【知识记录】分布式事务解决方案
来源:互联网 发布:java分段函数是 编辑:程序博客网 时间:2024/05/17 03:37
目前使用较多的三种分布式事务解决方案:
一、TCC事务补偿型解决方案
TCC分为三个阶段TRYING-CONFIRMING-CANCELING。每个阶段做不同的处理。
TRYING 阶段主要是对业务系统做检测及资源预留
CONFIRMING 阶段主要是对业务系统做确认提交,TRYING阶段执行成功并开始执行CONFIRMING阶段时,默认 CONFIRMING阶段是不会出错的。即:只要TRYING成功,CONFIRMING一定成功。
CANCELING 阶段主要是在业务执行错误,需要回滚的状态下执行的业务取消,预留资源释放。
以上所有的操作需要满足幂等性,幂等性的实现方式可以是:
1、通过唯一键值做处理,即每次调用的时候传入唯一键值,通过唯一键值判断业务是否被操作,如果已被操作,则不再重复操作
2、通过状态机处理,给业务数据设置状态,通过业务状态判断是否需要重复执行
二、结合MQ消息中间件实现的可靠消息最终一致性解决方案
可靠消息最终一致性,需要业务系统结合MQ消息中间件实现,在实现过程中需要保证消息的成功发送及成功消费。即需要通过业务系统控制MQ的消息状态。
三、最大努力通知型解决方案
按规律进行通知,不保证数据一定能通知成功,但会提供可查询操作接口进行核对。这种方案主要用在与第三方系统通讯时,比如:调用微信或支付宝支付后的支付结果通知。这种方案也是结合MQ进行实现,例如:通过MQ发送http请求,设置最大通知次数。达到通知次数后即不再通知。
0 0
- 【知识记录】分布式事务解决方案
- sqlserver分布式事务解决方案
- 分布式事务解决方案
- 分布式事务解决方案
- 分布式事务解决方案
- 分布式事务解决方案
- 分布式事务一致性解决方案
- 分布式事务一致性解决方案
- 分布式事务解决方案
- 分布式事务解决方案
- 分布式事务解决方案
- 分布式事务的解决方案
- 分布式事务的解决方案
- 分布式事务解决方案
- 分布式事务解决方案
- 分布式事务解决方案
- 互联网分布式事务解决方案
- 分布式事务的解决方案
- JS两个数组比较,删除重复值(转)
- 第三周项目3-求集合并集
- HDU1128:Self Numbers
- Android中的线程池(一)
- Gitbook简易教程
- 【知识记录】分布式事务解决方案
- 动态规划-选学生
- Gitbook输出为静态网站并启动 (链接中有入门教程)
- 【已解决】Python脚本运行出现语法错误:IndentationError: unindent does not match any outer indentation level
- 关于Ext3.0中按条件查询并重新加载Grid中的数据的实现过程及store.load的分析
- datatables edit 重新定义 创建 修改 删除的 URL路径
- 个人计划
- 第三周项目4-顺序表应用(1)
- Android 使用Messenger实现跨app通信