图解分布式事务的详细过程
2025-02-26 本文已影响0人
知信学源
图解分布式事务的全部解决方案 图解分布式事务难题 Seata和Rocketmq事务消息也是我们我们正在使用的,非常适合中小型公司 AP、CP两个维度展开解决方案
image.png
Seata和Rocketmq事务消息方案 本方案具有: 强弱结合型事务 全部特点 非常适合中小型项目使用 秒杀/抢购/电商库存增减/供应链库存增减 等场景,都是属于 强弱结合型 的数据一致性场景
首先看看 RocketMQ 的事务消息, 能够保证本地操作 + 消息发送的原子性。具体来说, 主要是保证了本地方法执 行和消息发送在一个分布式事务中,要不全部成功,要不全部失败。 RocketMQ 通过发送 half 消息来实现,下面详细说明一下:
-
消息发送方 向 Broker 发送一条 half 消息;
-
half 消息发送成功后,消息发送方 执行本地事务;
-
如果 消息发送方 执行本地事务成功,则向 Broker 发送 commit 请求,否则发送 rollback 请求;
-
如果 Broker 收到的是 rollback 请求,则删除保存的 half 消息;
-
如果 Broker 收到的是 commit 请求,则把 half 消息投递到 真实 队列, 等待消费服务来拉取,然后删除保存的 half 消息;
-
如果 Broker 没有收到 rollback/commit 请求,则会发送请求到 Producer 查询本地事务状态,然后根据 Producer 返回的本地状态做 commit/rollback 相关处理。