消息队列产品RabbitMQ、RocketMQ、Kafka的比较
1.RabbitMQRabbitMQ用Erlang语言编写,最早是为电信系统间的可靠通信设计的。优点:(1)轻量级,迅捷,容易部署和使用,是应用最广泛的消息中间件之一。(2)灵活的路由配置。它在生产者和队列之间增加了一个Exchange模块,根据配置的路由规则将生产者发出的消息分发到不同的队列中。(3)每秒可以处理几万到几十万条消息,可以支撑绝大多...
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)设计上大量采用批量和异步的思想,获取了超高性能。但是同步收发消息的响应时延比较高,不太适合处理在线业务场景。
更多推荐
所有评论(0)