86-彻底解决分布式事务-集成LCN框架解决分布式事务

文章目录

        • 1. LCN框架解决分布式事务原理_
        • 2. LCN事务协调者集群原理
        • 3. mq解决分布式事务

1. LCN框架解决分布式事务原理_

  1. LCN客户端(发起方和参与方都必须要注册到事务协调者中)建立一个长连接
  2. 订单服务(发起方)调用库存服务接口(参与方)之前会向TxManager事务协调者创建一个事务分组id
  3. 订单服务(发起方)调用库存服务接口(参与方)的时候,会在请求头中存放该事务的分组id给库存服务
  4. 如果库存服务获取到请求头中对应的事务分组id,库存服务业务逻辑代码执行完毕后,会采用假关闭,不会提交事务
  5. 订单服务(发起方)调用库存服务接口(参与方)之后,如果订单服务执行没有问题的情况下,订单服务使用对应的事务分组id,通知给TxManager事务协调者,然后事务协调者根据该事务分组id,通知给所有的参与者提交事务

解答:长连接 好处减少宽带传输, 弊端比较占内存
86-彻底解决分布式事务-集成LCN框架解决分布式事务_第1张图片

2. LCN事务协调者集群原理

实现原理
项目启动时候获取lcn底层协议ip和端口号
1.1 lcn获取tm事务协调者注册地址
1、LCN客户端项目启动的时候,读取配置文件tm事务协调者注册地址
2、向该事务协调者注册地址发送一个请求,获取对应的lcn底层协议ip和端口号(netty通讯)
3、会向该lcn底层协议ip和端口号建立一个长连接,保持会话信息
如果lcn客户端与事务协调者保持的长连接端口后,那么lcn客户端在通过nginx负载均衡实现故障转移到下一台事务协调者服务器获取对应的lcn底层协议ip和端口号并建立长连接
86-彻底解决分布式事务-集成LCN框架解决分布式事务_第2张图片

3. mq解决分布式事务

场景1:如果消费者消费消息失败了,生产者是不需要回滚事务
解决办法:消费者用手动ack应答方式,采用MQ进行补偿重试机制,注意MQ幂等性问题
场景2:如果生产者发送消息到MQ服务器失败
解决办法:使用生产者重试机制进行发消息
场景3:如何保证第一个事务限制性,生产者投递消息到MQ服务器成功,消费者消费成功,但订单服务回滚了
86-彻底解决分布式事务-集成LCN框架解决分布式事务_第3张图片

你可能感兴趣的:(笔记)