RockMq事务消息原理

2020-05-20  本文已影响0人  大强斌

场景

        通过mq 进行分布式事务的一致性控制,参考转账事务原理

目的:

        保持本地事务和mq发送的原子性

过程:

       步骤1: 发送prepare消息到broker

       步骤二 执行本地事务

       步骤三:发送本地事务提交的结果,到broker中。broker根据提交的结果 对prepare中的消息决定提交还是回滚。

                        提交的处理------

                                    1将prepare的消息从对应的top 转发到原top 客户进行消费.

                                    2另外一份存储到 已处理topic

                                   3prepare对应的消息会被删除。

                        回滚

                                    和提交不同的是,参考上面步骤,没有步骤1

步骤四:对于因为网络 或客户端的问题,broker没有收到客户端的状态提交,会有定时任务进行查询补漏机制,

定时查询客户端执行的本地事务状态(TransactionListener check方法),进行对事务进行处理。

可能出现的问题

  1执行本地事务 客户端宕机了,broker 服务器,

 2没有接受到客户端发送的事务执行结果    

3broker 宕机了。

以上几种场景通过check机制,进行事务的补偿

事务消息本质上属于saga 事务的一种。将一连串的大事务。分成几个独立的小事务。

    适应场景 1必须支持幂等性 2场景的独立性

  1性能高 2 业务改造成本低3 无法解决事务的隔离性 

事务理论参考 本博客的分布式事务 https://www.jianshu.com/writer#/notebooks/40709597/notes/56179033

原文参考

        http://silence.work/2018/08/22/RocketMQ-4-3%E4%BA%8B%E5%8A%A1%E4%BD%BF%E7%94%A8%E4%B8%8E%E5%88%86%E6%9E%90/

如果感觉好辛苦您点个赞,谢谢

上一篇 下一篇

猜你喜欢

热点阅读