主流消息队列介绍
主流消息队列介绍
- RabbitMQ
- 特点
- Erlang 语言编写
- 为电信行业可靠性设计
- 支持 AMQP 协议
- 轻量级,容易部署及使用
- 每秒几万到十几万
- 劣势
- 消息大量堆积时,性能会下降
- 性能相比较于其他的比较差
- Erlang 太冷门,不好维护
- 特点
- RocketMQ
- 特点
- 阿里巴巴 2012 开源,后来捐给 Apache 成了顶级项目
- 可靠性、稳定性高的国产消息队列,时延低
- 中文社区活跃
- JAVA 开发,贡献者大多是中国人
- 比 RabbitMQ 的性能高出一个数量级,每秒钟能处理几十万条消息
- 劣势
- 作为国产的消息队列,在国际上没有那么流行
- 特点
- Kafka
- 特点
- 由 LinkedIn 开发,也是 Apache 顶级项目
- 早期为了获得高性能,设计方面有牺牲
- 不保证消息可靠性
- 可能丢失消息
- 不支持集群
- 当前的 Kafka 已经成熟,可靠性稳定性已经可以满足绝大多数场景
- 周边生态好,在大数据和流式计算领域,所有的相关开源软件都会优先支持 kafka
- 使用 Scala 和 JAVA 开发,Kafka 的异步收发性能是三者最好的
- 劣势
- 同步收发消息响应时延比较高
- 客户端发一条消息时,kafka 不会立即发送,而是要等一会攒一批再发送,所以不适合在线业务场景
- 同步收发消息响应时延比较高
- 特点
- ActiveMQ
- 特点
- 最老牌开源消息队列
- 十年前唯一可供选择的消息队列
- 存在的意义是兼容还在用的爷爷辈的系统
- 劣势
- 社区不活跃
- 功能和性能差
- 特点
- ZeroMQ
- 基于消息队列的多线程网络库
- 如果需求是把消息队列的功能集成进系统进程中,可以考虑使用
- Pulsar
- 新兴消息队列产品
- 处于成长期
- 存储和计算分离设计
- 也许是未来发展方向,建议关注
最后修改于 2019-12-13
本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。