这里在核心业务线上没有改变组件选择,换掉kafka的一个原因是涉及大量结算业务,Redis队列模式弃用,基于Python的管理系统功能不多,这里只是顺手换掉,统一业务线的编程语言。这样设计之后,从整体思路上看就会合理很多。
1 整体思路
涉及核心角色说明,从左向右依次:
在整体的技术难度上没有太多差别,但是引入两个服务【生产和消费】,用来管理MQ通信流程,适配特定的业务逻辑,引入数据库做一次落地存储,在异常流程的处理上更加灵活,这样整个消息模块具有很强的可扩展性。
2 细节描述
消息中间件的选择是比较多的,但是鉴于业务线上开发人员的熟悉程度,以及参考多方提供的测试对比报告,最终确定选用RocketMQ组件,同时RocketMQ相关特点:高性能、高可靠性,以及对分布式事务的支持,也是核心的考虑因素。
基于当前微服务的架构模式,把MQ功能本身集成在两个核心服务中,进行统一管理和迭代,以及组件的版本控制,对于所有生产的消息,进行全局路由控制,以及特定情况下的,通过应用服务层面功能设计,实现消息延时消费,以及失败消息的二次调度执行,和部分单条消息的手动触发。
对消息实体进行二次存储,主要还是适配部分特定的功能点,有些消息可以延时处理,例如当MQ队列出现堆积的时候,或者达到监控的预警线时,可以通过配置手段,干预一部分消息只存储入库,不推送MQ,等待服务相对空闲的时候再去发送。
消息中间件作为系统间解耦的稳定支撑,在服务层面管理时,需要具备清晰的设计路线,以及流程关键节点的监控和记录,确保整个链路的稳定和容错。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。