高斋晓开卷,独共圣人语。这篇文章主要讲述分布式服务下,消息中间件改造相关的知识,希望能为你提供帮助。
一、背景简介在系统开发初期,很容易出现这样一种情况:不同业务线上开发人员,因为技术栈和版本时间的影响,在选型的时候会优先使用自己熟悉的,例如MQ中间件常用的:Kafka、Rocket、Rabbit等,这样很容易忽略各个项目之间的组件差异问题;
在系统开发中后期,业务相对稳定之后,通常都会对资源占用较高的模块逐步重构,公共服务进行整合管理,从而使系统更具有整体性,在这个过程中,解决不同项目的中间件差异通常首当其冲,例如常见的缓存中心,MQ消息管理等;
这种情况一般来说很难避免,系统初期为了快速支撑业务,埋下很多坑点,一旦业务可以稳定发展,并且可持续性得到验证,就会开始适当考虑逐步进行模块重构,降低成本。
二、重构思路2.1 初期问题
在某创业公司研发初期,业务线上存在五个项目并行开发的情况,当时对于MQ的使用状况如下:
文章图片
- Rocket:核心业务3个项目,版本有差异;
- Kafka:数据权重偏高,1个项目采用;
- Redis:基于python连接,队列消息模式;
2.2 二次选型
基于业务的综合考量,对现有几个项目进行MQ重新设计,形成的整体架构思路如下:
文章图片
- MQ组件选择:采用RocketMQ;
- 换掉Redis组件的队列模式;
- 将基于Python的系统改java语言;
- 提供消息生产与消费两个服务;
- MQ的功能由上述服务进行统一维护;
三、改造过程3.1 整体思路
文章图片
涉及核心角色说明,从左向右依次:
- 生产客户端:需要请求服务端通信的节点,调用生产服务端封装的消息发送接口即可;
- 生产服务端:封装消息发送API,并维护路由管理,权限识别等,消息落地存储等;
- 消息存储层:主要基于消息中间件进行存储,数据库层面用来处理特定情况下的二次调度;
- 消费服务端:封装消息接收API,并根据路由标识,请求指定的消费端接口,完成通信;
- 消费客户端:响应消费服务端的请求,封装消费时具体的业务逻辑;
3.2 细节描述
- 组件选型
- 微服务架构
- 数据存储
消息中间件作为系统间解耦的稳定支撑,在服务层面管理时,需要具备清晰的设计路线,以及流程关键节点的监控和记录,确保整个链路的稳定和容错。
同系列:分布式概念 | 分布式事务 | Kafka集群 | RocketMQ组件 | Redis集群
四、源代码地址
GitEE·地址
https://gitee.com/cicadasmile
Wiki·地址
https://gitee.com/cicadasmile/butte-java-note/wikis
阅读标签
【Java基础】【设计模式】【结构与算法】【Linux系统】【数据库】
【分布式架构】【微服务】【大数据组件】【SpringBoot进阶】【Spring& Boot基础】
【数据分析】【技术导图】【 职场】
【分布式服务下,消息中间件改造】
文章图片
推荐阅读
- 智慧军营之动态人员监控系统
- 开源流媒体解决方案,流媒体服务器,推拉流,直播平台,SRS,WebRTC,移动端流媒体,网络会议
- 关于Kubernetes image垃圾镜像容器的回收
- 备份非Proxmox VE系统数据到Proxmox Backup Server
- 从HarmonyOS过渡到OpenHarmony应用开发指南&埋坑
- 最全的Spring依赖注入方式,你都会了吗()
- M-SQL(超强的多任务表示学习方法)
- 深入剖析RocketMQ源码-NameServer
- win7系统玩cf卡、FPS不高的处理措施