当前位置: 首页 > >

分布式事务实战(三)--可靠消息的最终一致性方案(本地消息服务)

发布时间:

前言

经过前面一篇文章的了解(消息一致性问题的分析),我们已经清楚了消息在发送以及接受端会存在一致性的问题;只有解决了消息的一致性问题, 才可以在分布式部署环境下我们认为他们是可靠的,进而可以基于可靠消息来保证最终的一致性。


方案介绍

本文主要介绍下本地消息服务的最终一致性解决方案:


整体流程架构图
主要是有以下几个关键的模块:


生产者模块:业务操作;消息的持久化,投递以及确认,查询等功能。
MQ中间件:只是负责消息的投递
消息消费系统:负责消息的消费,以及真正的业务投递,以及MQ ack的应答;以及本地消息系统的消息确认。
消费者:真正的消费业务节点。
消息恢复系统:主要是对于消息的补单,对于超时未确认的消息进行二次发送的作用。



流程的参考时序图:


异常流程:
任何节点发生异常,消息恢复系统可以进行消息的补单,可以轮询生产者中的消息表,查询超过一定时间未被确认的单子,进行重复的发送。


总结

优点:
1.消息时效性比较高
2.从开发的角度实现了消息数据的可靠性,消息数据的可靠性不依赖于MQ中间件,弱化了MQ中间件的依赖。方案比较轻量,容易实现。
缺点:
1.耦合性强,不可公用,每一个生产者都需要实现消息持久化以及消息查询的接口。
2.消息数据以及业务数据同库,占用了系统的资源



友情链接: