分布式事务解决方案(三)【基于可靠消息的最终一致性(独立消息服务实现)】
分类:
文章
•
2024-11-22 15:51:46
3. 最终一致性设计与实现——独立消息服务
3.1 整体架构

3.2 消息服务子系统
3.2.1 基本功能
- 存储预发送消息(主动方业务执行之前进行,预发送的消息存储后状态为待确认)
- 确认并发送消息(主动方业务完成之后,主动方或消息状态确认系统通过此接口将消息变为取消或发送中)
- 查询状态确认超时的消息(消息状态确认系统使用)
- 确认消息已被成功消费(被动方业务执行完成之后调用)
- 查询消费确认超时的信息
3.2.2 数据库设计
字段名 |
含义 |
id |
主键ID |
version |
版本号 |
cuser |
创建人 |
muser |
修改人 |
ctime |
创建时间 |
mtime |
修改时间 |
message_id |
消息ID |
message_body |
消息内容 |
message_try_times |
消息重试次数 |
message_queue |
消息队列名 |
message_dead |
消息是否死亡 |
status |
消息状态 |
remark |
备注 |
3.3 消息管理子系统
3.4 消息状态确认子系统
3.4.1 接口设计
- 处理待确认的超时消息(注意排序,超时时间越长应该越早处理)
3.5 消息恢复子系统
- 主动方调用方业务执行成功,消息服务子系统中消息状态已变成发送中.我们必须保证消息被被动方消费
3.6 实时消息服务子系统
3.7 异步确认(防止可补偿流程错误导致主流程回滚)
- 主动业务方流程
- 预发送消息
- 执行业务
- 确认发送(如果这一步超时会回滚前面的业务,但是消息已被发送到消息服务子系统并并持久化)