消息队列选型
Posted mooa
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了消息队列选型相关的知识,希望对你有一定的参考价值。
写在前面的话:本文章总结自geektime消息队列专栏
主流消息队列对比
1. RabbitMQ(开箱即用,易于维护)
- RabbitMQ的优点
- 基于Erlang实现,支持AMQP协议(这是一个什么协议?),轻量级的消息队列,非常容易部署和使用
- 支持非常灵活的路由配置,在生产者(producer)和消费者(Queue)之间增加了一个类似交换机功能的Exchange模块
- 路由规则可以将生产者发出的消息分发到不同的队列中,可自定义实现
- 支持客户端语言最多
- RabbitMQ的不足
- 对消息堆积的支持不太好,大量消息堆积会导致性能急剧下降
- 性能一般,每秒钟可以处理几万到十几万条消息
- 二次开发比较困难
2. RocketMQ(处理在线业务)
- Rocket的优点
- 基于Java实现,阿里开源,Apache顶级项目,经受多过次“双十一”的考验,性能、稳定性、可靠性值得信赖
- 中文社区活跃,功能特性齐全
- 可实现毫秒级响应,每秒钟大概能处理几十万条消息
- 易于二次开发
- Rocket的不足
- 国产消息队列,在国际上不太流行,与周边生态系统的集成和兼容程序要略逊一筹
3. Kafka(处理海量消息)
- Kafka的优点
- 使用Scala和Java语言开发,LinkedIn开源,Apache顶级项目
- 设计上大量使用批量和异步的思想,拥有超高性能
- 异步收发性能最好,每秒钟大概能处理几十万条消息
- 周边生态系统的兼容性是最好的,尤其在大数据和流计算领域,几乎所有的相关开源软件系统都会优先支持Kafka
- Kafka的不足
- 不适合在线业务场景
- 同步收发消息的响应时延比较高
其他消息队列(不推荐使用)
1. ActiveMQ
- 最老牌开源消息队列,十年前唯一可供选择的开源消息队列
- 社区不活跃
性能差异较大不适用于当今互联网应用场景
2. ZeroMQ
- 不能称为是一个消息队列,只是一个消息队列的多线程网络库
可将消息队列的功能集成到系统中
3. Pulsar
- 新兴开源的消息队列产品
- Yahoo开发,现处于成长期,流行度、稳定度不高
- 采用存储和计算分离的设计,可能会引领未来消息队列的一个方向,可以关注一下
以上是关于消息队列选型的主要内容,如果未能解决你的问题,请参考以下文章