高性能可伸缩的分布式消息中间件设计
本博客迁移到部署在jae上的独立博客系统wordpress,博客地址:点击打开独立博客。欢迎大家一起来讨论IT技术。
消息中间件基本上是每一个大型互联网公司的标准基础技术组件配置,虽然有很多的开源消息中间件,功能也很强大,但是今天我还是想介绍一下怎样自主架构与设计并实现一套完整的分布式消息中间件。
开源的消息中间件或多或少存在一些所谓“坑”,没有遇到大家用得都很happy,遇到的同学就只有加班查资料、google搜索或者直接review开源代码寻找问题原因了。还有就是基本上开源的消息中间件一般都是大而全的功能,一般比较强调通用嘛。今天为大家介绍的是可以灵活横向扩展并且具有高性能的分布式消息中间件的架构设计,也会介绍一些实现的关键技术,也可能很多开源软件实现也有同样的功能,所以通过了解这些设计与实现的核心技术,也可以更好的理解和使用开源的消息中间件。
一、设计目标
先简单此设计需要达到的一些目标吧:
(1)高性能:应该能够充分利用cpu、内存和网卡等资源,通常情况下是把网卡(1000M网卡)撑满;
(2)消息转发实时性:延迟必须在一个设定目标内(可配置);
(3)消息不丢失:正常情况下不丢失(如果由于某一个消息接收到自己网络出现问题导致连接断开丢失的不算,这个需要消息中间件的客户端解决的问题);
(4)可以横向无缝扩展:当一个服务节点服务能力不足时,可以无缝的扩展服务节点,对其他服务节点和所有客户端透明;
(5)安全性:客户端需要通过用户名和密码才能和服务器建立连接、发送消息和订阅消息等;
(6)可以无缝升级系统:程序由于bug或者新增功能等上线是在所难免的,但是不应该影响正常的消息通信;
(7)可以无缝缩减服务节点:如果消息转发量不是很大使用过多的节点是资源的浪费(服务器、电费等);
(8)分布式,防单点;
(9)支持分组订阅:这个分组订阅的功能太好使用了,尤其在做任务的负载均衡调度的时候,后面我会用一篇单独的文章介绍基于分布式消息中间件的负载均衡调度系统设计;
(10)其他。。。。
二、基本架构图
先上图,在解释,如下图:
整个内容请看:www.wuyouqiang.com
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库