分布式事务解决方案一之:可靠消息最终一致性
2017-08-10 10:54
459 查看
SOA场景下,会出现调用远程插入数据,本地插入数据失败后,远程存在脏数据的问题,为此可通过
可靠消息解决分布式事务的最终一致性。
场景:先调用远程插入数据,在调用本地插入数据,实现消息的最终一致性,假设都只有单表插入数据,其他业务不做处理
主要流程分支如下:
1.远程插入失败,发送error消息,本地接受到error消息,不做插入处理--结果:都为插入
2.远程插入成功,发送ok消息,本地接受ok消息,本地插入失败,发送error消息(带有remitrecordid参数方便远程自己回滚)
3.远程插入成功,发送ok消息,本地接受ok消息,本地插入成功,发送ok消息
可能问题:
1.远程插入失败,发送的消息我没收到,没问题啊,我也没插入,你也没插入
2.远程插入成功,发送ok消息我没收到,导致我本地没有做插入,解决方案可以把消息持久化数据库,定时查询远程发送OK消息,但是本地未接受的消息,对本地做插入操作
2.远程插入成功,发送ok消息,本地插入失败,发送error消息后远程没收到,没有回滚远程的数据,没问题,消息持久化定时查询本地发送error消息,远程未接受的消息,对远程做回滚操作
3.远程插入成功,发送ok消息,本地接受ok消息,本地插入成功,发送ok消息的远程没收到,没关系,我插入了,你也插入了嘛
关于消息持久化的参数:
消息内容:json字符串形式,比如{"ppMerchantNo":"0000000110000044","productCode":"WECHAT","providerCode":"0000000","remitRecordId":"MHRMT20170810101647200wFDJ6we","settleRecordId":"MHCAL20170710151931024HSCEOLc","status":"error"}
消息状态"已发送,已接收
消息内容的状态:ok,error,配置出来这个是因为我们如果远程发送给本地Error消息,本地没收到,对双方都没影响,我直接不处理了,可以减少定时补偿消息和数据的数量
消息发送者:本地
消息接受者:远程
可靠消息解决分布式事务的最终一致性。
场景:先调用远程插入数据,在调用本地插入数据,实现消息的最终一致性,假设都只有单表插入数据,其他业务不做处理
主要流程分支如下:
1.远程插入失败,发送error消息,本地接受到error消息,不做插入处理--结果:都为插入
2.远程插入成功,发送ok消息,本地接受ok消息,本地插入失败,发送error消息(带有remitrecordid参数方便远程自己回滚)
3.远程插入成功,发送ok消息,本地接受ok消息,本地插入成功,发送ok消息
可能问题:
1.远程插入失败,发送的消息我没收到,没问题啊,我也没插入,你也没插入
2.远程插入成功,发送ok消息我没收到,导致我本地没有做插入,解决方案可以把消息持久化数据库,定时查询远程发送OK消息,但是本地未接受的消息,对本地做插入操作
2.远程插入成功,发送ok消息,本地插入失败,发送error消息后远程没收到,没有回滚远程的数据,没问题,消息持久化定时查询本地发送error消息,远程未接受的消息,对远程做回滚操作
3.远程插入成功,发送ok消息,本地接受ok消息,本地插入成功,发送ok消息的远程没收到,没关系,我插入了,你也插入了嘛
关于消息持久化的参数:
消息内容:json字符串形式,比如{"ppMerchantNo":"0000000110000044","productCode":"WECHAT","providerCode":"0000000","remitRecordId":"MHRMT20170810101647200wFDJ6we","settleRecordId":"MHCAL20170710151931024HSCEOLc","status":"error"}
消息状态"已发送,已接收
消息内容的状态:ok,error,配置出来这个是因为我们如果远程发送给本地Error消息,本地没收到,对双方都没影响,我直接不处理了,可以减少定时补偿消息和数据的数量
消息发送者:本地
消息接受者:远程
相关文章推荐
- 分布式事务解决方案之消息最终一致性(可靠消息服务)上篇
- 分布式事务解决方案之消息最终一致性(可靠消息服务)下篇
- 微服务架构分布式事务解决方案设计思路(可靠消息最终一致方案-设计方案)
- 分布式事务四_基于可靠消息的最终一致性
- 分布式事务解决方案之消息发送一致性(可靠消息的前提保障)
- 微服务架构分布式事务解决方案设计思路(可靠消息最终一致方案-概念)
- 【分布式事务】可靠消息最终一致性方案
- 分布式事务五_基于可靠消息的最终一致性_异常流程
- 分布式事务八_可靠消息最终一致性方案
- 分布式事务九_基于可靠消息的最终一致性代码
- 分布式消息最终一致性事务
- 分布式事务方案:可靠消息最终一致方案
- (微服务)分布式事务-最大努力交付 && 消息最终一致性方案
- 如何选择分布式事务形态(TCC,SAGA,2PC,基于消息最终一致性等等)
- 消息中间件(一)分布式系统事务一致性解决方案大对比,谁最好使?
- 分布式消息最终一致性事务
- 消息中间件(一)分布式系统事务一致性解决方案大对比,谁最好使?
- 分布式事物学习之(可靠消息一致性方案之独立消息服务)(七)
- 分布式系统事务一致性解决方案
- 分布式系统事务一致性解决方案