高并发架构实战 Day 34

2023年 10月 4日 28.5k 0

RabbitMQ 和 RocektMQ 属于业务消息类的消息队列,它们的特点是功能丰富、低延时、数据高可靠性、消息可追踪等等,同时也支持延时消息、优先级队列、消息过滤等功能特性。

RabbitMQ 发展较早,RocketMQ 则是新生的消息类的消息队列,从功能、集群化、稳定性、性能来看,RocketMQ 都是比 RabbitMQ 表现要好的。所以从某种意义上说,RocketMQ 是可以替代 RabbitMQ 的,但是因为 RabbitMQ 发展悠久、内核稳定以及能满足大部分的业务消息场景,所以目前用户群体也很大。国内的业务消息类的选型一般以 RocketMQ 优先,然后才是 RabbitMQ,而国外的业务消息类选型一般优先的是 RabbitMQ。
 

Kakfa 属于主打流场景的消息队列。它的特点是追求高吞吐、大流量,在功能上相对简单。不支持太多消息队列的功能,比如死信队列、延时消息、消息过滤等等。但它的核心竞争力就是非常稳定、吞吐性能非常高,能承担超大流量的业务场景。所以它是流场景下的消息管道的不二选择。
 
Pulsar 从定位上是消息和流一体的。目标就是满足所有消息和流的场景,希望同时满足功能和性能两方面的需求。所以 Pulsar 的内核会支持很多功能,在性能和吞吐方面也经常拿来与 Kakfa 做比较。但是因为其发展时间较短,目前还不是那么稳定,正处于快速发展阶段。

从个人选择来看,业务消息类的场景,我会推荐你优先选择 RocketMQ。主要原因是 RocketMQ 的性能高、社区活跃、集群化架构稳定、功能也非常丰富。而 RabbitMQ 当前架构存在缺点,单机存在瓶颈,在高 QPS 场景表现不是那么好,并且可能出现网络分区。所以从功能、性能、稳定性出发,我会优先推荐你使用 RocketMQ。
 
流方向的场景,我会推荐你优先选择 Kafka。主要原因是 Kafka 本身的性能和吞吐表现非常优越,延时和可靠性表现也不错。而 Pulsar 虽然主打的是替换 Kafka,并且功能丰富,架构设计理念先进,但是因为发展周期较短,很多功能还不稳定,当前阶段的现网运营表现并不是那么好。所以虽然 Kafka 存在扩容、Rebalance 方面的缺陷,但是从稳定性、性能出发,我还是会优先推荐你使用 Kafka。
 
在日常使用中,我们也可能会根据业务需求同时运营多款消息队列,比如 RocketMQ/RabbitMQ+Kafka。

相关文章

JavaScript2024新功能:Object.groupBy、正则表达式v标志
PHP trim 函数对多字节字符的使用和限制
新函数 json_validate() 、randomizer 类扩展…20 个PHP 8.3 新特性全面解析
使用HTMX为WordPress增效:如何在不使用复杂框架的情况下增强平台功能
为React 19做准备:WordPress 6.6用户指南
如何删除WordPress中的所有评论

发布评论