02-如何选择消息队列
2019-08-07 本文已影响0人
weylau
选择标准
- 是否开源以及是否有活跃的社区
bug能快速修复,遇到问题能更快的解决
- 较好的兼容以及集成
- 消息的可靠传递:确保不丢消息;
- 支持集群,确保不会因为某个节点宕机导致服务不可用,当然也不能丢消息;
- 性能:具备足够好的性能,能满足绝大多数场景的性能要求。
消息队列产品对比
rabbitmq
优点
- exchange灵活的路由配置
- 轻量、开箱即用,容易部署使用
- 客户端支持的语言多
缺点
- 对消息堆积不友好,当消息堆积时,性能急剧下降
- 相对于其他产品,性能较差,每秒大概处理几万到十几万消息
- 使用小众语言erlang开发,不便于二次开发
rocketmq
由阿里开源,现已捐赠Apache软件基金会
优点
- 性能好,每秒处理几十万消息
- 低延时,适合在线应用场景
- 中文社区强大
- java开发,便于二次开发和扩展
kafka
Kafka 最早是由 LinkedIn 开发,目前也是 Apache 的顶级项目。Kafka 最初的设计目的是用于处理海量的日志。
优点
-
与周边生态系统的兼容性是最好的没有之一,尤其在大数据和流计算领域,几乎所有的相关开源软件系统都会优先支持 Kafka。
-
超高的性能。Kafka 的性能,尤其是异步收发的性能,是三者中最好的,但与 RocketMQ 并没有量级上的差异,大约每秒钟可以处理几十万条消息。
缺点
- “先攒一波再一起处理”的设计,导致消息有延时,不太适合在线业务场景
如何选择
-
如果说,消息队列并不是你将要构建系统的主角之一,你对消息队列功能和性能都没有很高的要求,只需要一个开箱即用易于维护的产品,我建议你使用 RabbitMQ。
-
如果你的系统使用消息队列主要场景是处理在线业务,比如在交易系统中用消息队列传递订单,那 RocketMQ 的低延迟和金融级的稳定性是你需要的。
-
如果你需要处理海量的消息,像收集日志、监控信息或是前端的埋点这类数据,或是你的应用场景大量使用了大数据、流计算相关的开源产品,那 Kafka 是最适合你的消息队列。
内容来源说明:文章中的部分内容以及图片来自《极客时间-消息队列高手课》,写文章目的只是作为学习后的总结和整理