作为一款合格的消息队列产品,必须包含的特征:
- 1.消息的可靠传递: 确保消息不丢失
- 2.Cluster:支持集群,确保某个节点宕机导致不可用,当然也不能丢消息
- 3.性能: 具备足够好的性能,能满足绝大多数场景的性能需求
- 4.开源: 必须开源,使用的消息队列遇到了一个bug,可以在最短时间内规避或修复这个bug
第一阶梯 消息队列
RabbitMQ:
- 优点: 轻量,迅捷,容易部署和使用,拥有灵活的路由配置
- 缺点: ErLang 语言开发,不易进行二次开发,性能和吞吐量较差
RocketMQ:
- 优点: 性能好,稳定可靠,有活跃的中文社区,特点响应快
- 缺点: Java 语言开发,兼容性较差,随着影响力的扩大,会有所改善
- 适用场景: 在线业务场景 订单 支付
KafKa:
- 优点: 拥有强大的性能及吞吐量,海量数据处理
- 缺点: Scala 和 Java 语言开发,批量 和 异步的操作会导致较高的延迟
- 适合场景: log记录 数据推送
第二阶梯 消息队列
ActiveMQ:
存在的意义仅限于兼容老牌系统
ZeroMQ:
基于消息队列的多线程网络库,可以将消息队列功能集成到系统中
Pulsar:
采用存储的计算分离的设计,消息队列中的黑马