基于RabbitMQ消息中间件实现分布式事务

RabbitMQ消息中间件实现分布式事务

  • 分布式事务问题
    • 引入RabbitMQ
    • 使用MQ
      • 步骤一:可靠消息生产-记录消息发送
      • 步骤二:可靠消息生产-修改消息发送状态
      • 步骤三:可靠消息处理-正常处理
      • 步骤四:可靠消息处理-消息重发
      • 步骤五:可靠消息处理-消息丢弃
    • 分布式事务解决方案:

分布式事务问题

基于RabbitMQ消息中间件实现分布式事务_第1张图片

引入RabbitMQ

使用MQ

优点:通用性强,扩展性强,方案成熟
缺点:基于MQ实现,只适合异步场景;消息处理会有延时,需要业务上能够容忍;

基于RabbitMQ消息中间件实现分布式事务_第2张图片

步骤一:可靠消息生产-记录消息发送

基于RabbitMQ消息中间件实现分布式事务_第3张图片

步骤二:可靠消息生产-修改消息发送状态

基于RabbitMQ消息中间件实现分布式事务_第4张图片

步骤三:可靠消息处理-正常处理

基于RabbitMQ消息中间件实现分布式事务_第5张图片

步骤四:可靠消息处理-消息重发

基于RabbitMQ消息中间件实现分布式事务_第6张图片

步骤五:可靠消息处理-消息丢弃

基于RabbitMQ消息中间件实现分布式事务_第7张图片

分布式事务解决方案:

基于数据库XA/JTA协议的方式:需要数据库厂商支持,JAVA组件有atomikos等
异步校对数据的方式:支付宝、微信支付主动查询支付状态,对账单的形式
基于可靠消息(MQ)的解决方案:异步场景,通用性较强,扩展性高
TCC编程式解决方案:BAT等大厂自己封装的DTX

你可能感兴趣的:(rabbitmq,分布式事务,分布式,RabbitMQ,分布式事务)