跳到主要内容

第九章 可靠消息最终一致性分布式事务原理

第九章 可靠消息最终一致性分布式事务原理

一、基本原理

可靠消息最终一致性的基本原理是事务发起方(消息发送者)执行本地事务成功后发出一条消息,事务参与方(消息消费者)接收到事务发起方发送过来的消息,并成功执行本地事务。事务发起方和事务参与方最终的数据能够达到一致的状态

这里主要强调如下两点:

1、 事务发起方一定能够将消息成功发送出去;
2、 事务参与方一定能够成功接收到消息;

可以利用消息中间件实现可靠消息最终一致性分布式事务方案,如下图所示:

 

事务发起方将消息发送给消息中间件,事务参与方从消息中间件中订阅(接收)消息。事务发起方会通过网络将消息发送给消息中间件,而事务参与方也需要哦通过网络接收消息中间件的消息。网络的不确定性可能会造成事务发起方发送消息失败,也可能会造成事务参与方接收消息失败,即造成分布式事务的问题

在使用可靠消息最终一致性方案解决分布式事务的问题时,需要确保消息发送和消息消费的一致性,从而确保消息的可靠性

二、本地消息表

为了防止在使用消息一致性方案处理分布式事务的过程中出现消息丢失的情况,使用本地事务保证数据业务操作和消息的一致性,也就是通过本地事务,将业务数据和消息数据分别保存到本地数据库的业务数据表和本地消息表中,然后通过定时任务读取本地消息表中的消息数据,将消息发送到消息中间件,等到消息消费者成功接收到消息后,再将本地消息表中的消息删除。这种方式实现的分布式事务就是基于本地消息表的可靠消息最终一致性分布式事务

1.实现原理

基于本地消息表实现的可靠消息最终一致性方案的核心思想是将需要通过分布式系统处理的任务,比如同步数据等操作,通过消息或者日志的形式异步执行,这些消息或者日志可以存储到本地文件中,也可以存储到本地数据库的数据表中,还可以存储到消息中间件中,然后通过一定的业务规则进行重试。这种方案要求各个服务的接口具有幂等性,原理如下图所示: