消息队列产品RabbitMQ、RocketMQ、Kafka的比较

1.RabbitMQ

   RabbitMQ用Erlang语言编写,最早是为电信系统间的可靠通信设计的。

    优点:

   (1)轻量级,迅捷,容易部署和使用,是应用最广泛的消息中间件之一。

   (2)灵活的路由配置。它在生产者和队列之间增加了一个Exchange模块,根据配置的路由规则将生产者发出的消息分发到不同的队列中。

  (3)每秒可以处理几万到几十万条消息,可以支撑绝大多数场景。

   缺点:

 (1)大量消息堆积时,会导致性能急剧下降。

 (2) 和其它两种消息队列产品相比,性能是最差的。因此,如果业务对性能要求特别高,就不要选用RabbitMQ。

 (3) Erlang编程语言比较小众,学习成本高,不容易二次开发。

2.RocketMQ

   RocketMQ是阿里巴巴2012年开源的产品,是优秀的国产消息队列。

    优点:

 (1)中文社区活跃,源代码易读,方便二次开发。

 (2)每秒可以处理几十万条消息,性能比RabbitMQ高一个数量级。

 (3)对在线业务的响应时延做了很多优化,大多数情况下可以做到毫秒级响应。因此,如果业务很在意响应时延,就应该选用RocketMQ。

    缺点:

  (1)作为国产消息队列,在国际上没那么流行,与周边产品的集成和兼容性略差。

3.Kafka

    最早由LinkedIn开发,最初设计的目的是处理海量日志。

    早期的版本为了获取极致的性能,在其它方面做了牺牲,如可靠性低,不支持集群,功能也简陋。但随后的版本已经补齐了这些短板,在可靠性、稳定性和功能等方面已经可以满足绝大部分场景的需求。

    优点:

 (1)与周边产品的集成和兼容性非常好。在大数据和流计算领域,几乎所有的开源软件都支持Kafka。

 (2)每秒可以处理几十万条消息,也比RabbitMQ高一个数量级。

    缺点:

 (1)设计上大量采用批量和异步的思想,获取了超高性能。但是同步收发消息的响应时延比较高,不太适合处理在线业务场景。

发布了515 篇原创文章 · 获赞 135 · 访问量 30万+

猜你喜欢

转载自blog.csdn.net/liyazhen2011/article/details/103183798