主流消息队列介绍

主流消息队列介绍

  • 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 国际许可协议进行许可。