RocketMQ

与 Kafka 的区别

在 RocketMQ 诞生前, 当时,业界已有许多商业或开源的消息队列,如 IBM MQ、ActiveMQ 和 RabbitMQ。 然而,这些消息队列无一例外都诞生于传统的企业级应用场景,无法满足互联网对高并发和无限扩展的苛刻要求。 以 RabbitMQ 为例,RabbitMQ 的队列流量和存储负载都是独立的,无法满足业务扩展的需求。

当时,另一个具有无限扩展能力的消息队列是 Kafka,但它主要用于日志场景,缺乏稳定性。 此外,它更倾向于简单的日志消息队列,无法满足电子商务对消息过滤和延迟消息等复杂消息功能的需求。

另一个问题是,传统的消息队列无法满足电子商务业务对分布式一致性的要求。由此 RocketMQ 应运而生:

  1. 支持超大规模的复杂业务,提供丰富的信息功能
  2. 分布式事务
  3. 稳定性。RocketMQ 在产品层面上建立了全方位的稳定性,如消息跟踪、消息回溯和消息死信机制。
  4. 高性能。

总结:适用场景

​RocketMQ
适合业务消息场景(如订单、交易、充值),需事务消息、延迟消息、灵活过滤和高可靠性的场景。
Kafka
适合大数据流处理场景(如日志收集、Metrics 监控),追求超高吞吐量和水平扩展性。

两者设计差异源于场景驱动:RocketMQ 偏向业务系统集成,Kafka 偏向数据管道和流式计算。