消息队列备选架构选择,你选择哪个?
创始人
2025-07-07 18:40:28
0

备选架构1 - 开源方案评估

kafka:

人力成本:

测试代表倾向于引入 Kafka,因为 Kafka 比较成熟,无须太多测试投入。

中间件团队部分研发人员也支持使用 Kafka,因为使用 Kafka 能节省大量的开发投入。

可维护性:

Kafka 是 Scala 语言编写的,运维团队没有维护 Scala 语言开发的系统的经验,出问题后很难快速处理。

运维团队已经有一套成熟的运维体系,包括部署、监控、应急等,使用 Kafka 无法融入这套体系,需要单独投入运维人力。

业务场景:

部分人员认为 Kafka 可能并不适合我们的业务场景,Kafka 是大容量的日志消息传输,而我们的消息队列是为了业务数据的可靠传输。

学习成本:

业务主管倾向于采用 Kafka 方案,因为 Kafka 已经比较成熟,各个业务团队或多或少都了解过 Kafka

备选架构2 - 自研集群 + MySQL 存储

图片图片

【简单描述】

1. Java 语言编写消息队列服务器;

2. 消息存储采用 MySQL;

3. SDK 轮询服务器进行消息写入;

4. SDK 轮询服务器进行消息读取;

5. MySQL 双机保证消息尽量不丢;

6. 使用 Netty 自定义消息格式,并且支持HTTP 接口。

成本:

中间件团队的研发人员认为这个方案比较简单,实现成本低,但测试代表认为这个方案测试人力投入较大。运维团队认为这个方案的硬件成本比较高,一个数据分组就需要4台机器(2台服务器 + 2台数据库)。

可维护性:

方案可以融入到现有的运维体系中,而且使用 MySQL 存储数据,可靠性有保证,运维团队也有丰富的 MySQL 运维经验。

业务主管对这个方案既不肯定也不否定,因为开发和运维都不是业务团队,对业务团队来说,只要保证消息队列系统稳定和可靠即可。

业务场景:

可以为业务场景定制开发各种特性,例如权限控制、消费速度预警等。

性能:

部分研发人员对于这个方案的性能持怀疑态度,毕竟使用 MySQL 来

存储消息数据,性能肯定不如使用文件系统。

其它:

是否会影响中间件团队的技术声誉,毕竟用 MySQL 来做消息队列,看起来比较“土”、比较另类。

备选架构3 - 自研集群 + 自研存储

图片图片

1. 模拟 Kafka 的原理,用 Java 语言实现,也可以用 LSM 数据结构来存储消息。

2. 可以保证高可用高性能。

3. 加上可维护性的各种能力,嵌入到已有的运维体系。

备选架构3评估

成本:

要做到稳定可靠的存储系统,需要较长时间迭代,投入成本大。

自研存储系统的测试难度高,投入也很大。

可维护性:

可以融入到现有的运维体系中,但自研存储系统需要较长时间才能成熟,增大了运维风险和投入。

业务场景:

可以为业务场景定制开发各种特性,例如权限控制、消费速度预警等。

性能:

性能上相比 MySQL 要高,但初步评估并不能高太多。

可用性:

从历史经验来看,新系统上线肯定有bug,而存储系统出 bug 是最严重的,一旦出 bug 导致大量消息丢失,影响会很严重。运维代表不太赞成这个方案,因为运维之前遇到过几次类似的存储系统故障导致数据丢失的问题,损失惨重。

团队技术实力:

方案复杂度太高,按照目前的团队人力和技术实力,要做到稳定可靠的存储系统,有较大风险。

运维团队并不相信目前的中间件团队的技术实力足以支撑自己研发一个存储系统。

备选架构4 - 直接用阿里的 MetaQ

RocketMQ

成本:

低,接入即可。

可维护性:

UC 机房和阿里机房隔离,打通困难,如果在 UC 机房部署阿里的系统,部署、维护、升级的人力成本太高。

UC 机房3年内估计不会切换阿里机房。

业务场景:

可以为业务场景定制开发各种特性,例如权限控制、消费速度预警等。

性能:

性能上和 Kafka 基本持平。

可用性已经上线运行,支撑阿里业务,久经考验。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
P2P的自白|我不生产内容,我... 现在一提起P2P,人们就会联想到正在被有关部门“围剿”的互联网理财服务。×租宝事件使得劳...
Intel将Moblin社区控... 本周二,非营利机构Linux基金会宣布,他们将担负起Moblin社区的管理工作,而这之前,Mobli...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...