分布式消息队列RocketMQ与Kafka架构上的巨大差异

本文对比了Kafka和RocketMQ在分布式消息队列架构上的差异,特别是Master/Slave和Broker的概念区别。RocketMQ的Master/Slave是物理概念,固定角色,不需要ZK进行选举,而Kafka的Master/Slave需要动态选举。这种差异简化了RocketMQ的管理,使其能够使用无状态的NameSrv实现高可用,避免了对ZK的依赖。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

分布式消息服务 Kafka 是一个高吞吐、高可用的消息中间件服务,适用于构建实时数据管道、流式数据处理、第三方解耦、流量削峰去谷等场景,具有大规模、高可靠、高并发访问、可扩展且完全托管的特点,是分布式应用上云必不可少的重要组件。

NameSrv是无状态的,你可以随意的部署多台,其代码也非常简单,非常轻量。

那不禁要问了:ZooKeeper是业界用来管理集群的一个非常常用的中间件,比如Kafka就是依赖的ZK。那为什么RocketMQ要自己造轮子,自己做集群的管理呢?纯粹就是再做一个Zookeeper吗?

本篇试图通过一个架构上的巨大差异,来阐述为什么RocketMQ可以去掉ZK。

Kafka的架构拓扑图

我们知道,在Kafka中,是1个topic有多个partition,每个partition有1个master + 多个slave。对应如下图所示:

注意:这里只有3台机器(b0,b1,b2),每台机器既是Master,也是Slave。具体来说,比如机器b0,对于partition0来说,它可能是Master;对应partition1来说,它可能又是Slave。

RocketMQ的架构拓扑图

不同于Kafka里面,一台机器同时是Master和Slave。在RocketMQ里面,1台机器只能要么是Master,要么是Slave。这个在初始的机器配置里面,就定死了。其架构拓扑图如下:

 

 

 

在这里,RocketMQ里面queue这个概念&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值