分布式事务五_基于可靠消息的最终一致性_异常流程
更多干货
- 分布式事务处理一
- 分布式事务二
- 分布式事务处理三
- 分布式事务四_基于可靠消息的最终一致性
- 分布式事务五_基于可靠消息的最终一致性_异常流程
- 分布式事务六_常规MQ队列
- 分布式事务七_幂等性设计
- 分布式事务八_可靠消息最终一致性方案
- 分布式事务九_基于可靠消息的最终一致性代码
- 分布式事务10_最大努力通知形势
- 柔性事务解决方案:TCC(两阶段型、补偿型)
- 支付宝 分布式事务服务 DTS 一
- 分布式事务服务 DTS二
- 分布式事务服务 DTS三
- 支付宝 分布式事务服务 DTS四
一、消息发送一致性流程中的异常点
任何一个环节都可能会出问题!
二、消息发送一致性的异常情况分析
1.从主动方应用的角度来分析:
异常情况 | 可能的状态 | 一致性 |
---|---|---|
预发送消息失败 | 消息未进存储,业务操作未执行(可能的原因:主动方应用、网络、消息中间件、消息存储) | 一致 |
预发送消息后,主动方应用没有收到返回消息存储结果 | (1)消息未进存储,业务操作未执行 | 一致 |
同上 | (2)消息已进存储(待确认),业务操作未执行 | 不一致 |
收到消息存储成功的返回结果,但未执行业务操作就失败 | 消息已进存储(待确认),业务操作未执行 | 不一致 |
2.消息发送一致性的异常情况分析
异常情况 | 可能的状态 | 一致性 |
---|---|---|
消息中间件没有收到主动方应用的业务操作处理结果 | (1)消息已进存储(待确认),业务操作未执行(或业务操作出错回滚了) | 不一致 |
同上 | (2)消息已进存储(待确认),业务操作成功 | 不一致 |
消息中间件收到业务操作结果(成功/失败),但处理消息存储中的消息状态失败 | (1)消息已进存储(待确认),业务操作未执行(或业务操作出错回滚了) | 不一致 |
同上 | (2)消息已进存储(待确认),业务操作成功 | 不一致 |
3.消息发送一致性的异常情况总结
异常情况 | 一致性 | 异常处理方法 |
---|---|---|
消息未进存储,业务操作未执行 | 一致 | |
消息已进存储(状态待确认),业务操作未执行 | 不一致 | 确认业务操作结果,处理消息(删除消息) |
消息已进存储(状态待确认),业务操作成功 | 不一致 | 确认业务操作结果,处理消息(更新消息状态,执行消息投递) |