常见mq简单了解区别
·
| 特征 | RabbitMQ | RocketMQ | Kafka |
|---|---|---|---|
| 核心路由组件 | Exchange(交换机)+ 多种路由模式(直连 / 扇出 / 主题 / 头) | Topic + Tag(标签)(仅支持按标签路由) | 无交换机,直接按 Topic+Partition 路由(无复杂路由模式) |
| 消息存储单元 | Queue(队列,无分区) | Queue(逻辑队列)+ 队列分片(类似分区) | Topic + Partition(分区,核心差异) |
| 集群节点名称 | Node | Broker | Broker |
| 依赖的 “注册 / 管理” 组件 | 无(自身集群管理) | NameServer(注册中心,管理 Broker) | ZooKeeper/Kafka Controller(集群管理,非注册中心) |
| 你说的 “生产队列” | 显式 Queue(生产者发往交换机→路由到 Queue) | 无显式队列,发往 Topic+Tag | 无队列,直接发往 Topic 的 Partition |
核心结论
RabbitMQ vs RocketMQ:
RabbitMQ 多了「Exchange 交换机」和「更丰富的路由模式」(4 种);
RocketMQ 用「Topic+Tag」替代交换机,路由模式更简单(仅按标签匹配),且多了「NameServer 注册中心」管理 Broker。
Kafka vs RabbitMQ:
Kafka 核心多了「Partition 分区」(RabbitMQ 的 Queue 无分区,并发能力弱);
Kafka 没有交换机和复杂路由,逻辑更简单;
两者都有集群节点(Kafka 叫 Broker,RabbitMQ 叫 Node),不是 Kafka 多的;
Kafka 没有 “生产队列”,Partition 承担了 RabbitMQ Queue 的存储作用,且并发能力更强。
易记的口诀
RabbitMQ:交换机路由,队列存消息,路由灵活但吞吐一般;
RocketMQ:Topic+Tag 路由,NameServer 注册,兼顾灵活与吞吐;
Kafka:Topic+Partition,无交换机,高吞吐海量存储,路由简单。
更多推荐
所有评论(0)