来了来了,可靠消息的最终一致性方案-独立消息服务系统设计

独立消息服务系统设计

流程讲解

1.消息发送一致性的正向流程

a)主动方应用程序预发送消息,调用消息服务系统存储预发送消息,消息状态待发送

b)消息服务系统返回消息接收结果通知

c)主动方应用根据消息接收结果做响应处理

如果成功,则进行主动方后续业务操作d)

如果失败,则终止后续业务操作(此时消息未存储成功)

d)主动方进行后续业务操作

如果成功,则向消息服务系统确认并发送消息

如果失败,则向消息服务系统删除预发送消息

2.消息发送一致性的异常流程(消息状态确认子系统-定时轮询)

a)查询消息服务系统,如果有消息状态待发送确认超时(有超时时间大小),则进行b)

b)查询主动方应用的补偿接口-查询业务操作结果,确认主动方应用业务操作是否成功

如果成功,则向消息服务系统确认并发送消息

如果失败,则向消息服务系统删除预发送消息

3.消息投递(消费)一致性的正向流程

a)消息服务系统向实时消息系统投递消息

b)被动方系统监听实时消息系统队列,进行消息消费

c)被动方系统业务操作成功后,向实时消息系统发送消息消费确认ACK

同时,向消息服务系统确认消息已被成功消费

d)消息服务系统更新消息状态为已消费

4.消息投递(消费)一致性的异常流程(消息恢复子系统)

a)查询消息服务系统,如果已投递但确认超时的消息(消息发送中超时)进行b)

b)重新向实时消费系统投递消息,被动方系统要实现消息消费的幂等性

幂等性:多次调用和一次调用的结果对于系统是一样的

c)如果重复投递次数过多,就将消息状态确认为已死亡状态,不让消息一直投递拖垮系统

优缺点

独立消息服务系统的优点:

1.独立部署,独立维护,可伸缩

2.消息存储可以按需选择

3.消息服务可以被不同的使用场景共用,降低重复开发的成本

4.消息的可靠性不依赖于中间件

5.降低了业务系统和消息系统的耦合,提高了系统可扩展性

独立消息服务系统的弊端:

1.一次消息两次请求

2.主动方应用需要额外实现 业务操作结果查询接口

今天就分享到这里,欢迎喜欢我的读者【点赞】、【关注】,期待后续更新。可以在我的头条小程序页面领取自己喜欢的资料或者阅读喜欢的类型文章。

发表评论
留言与评论(共有 0 条评论)
   
验证码:

相关文章

推荐文章

'); })();