• MQ消息队列产品对比


    RabbitMQ

    由Erlang开发 轻量、开箱即用
    对消息堆积支持差,大量消息积压时,性能会急剧下降
    性能差,每秒钟可以处理几万到十几万条消息

    RocketMQ

    java开发社区活跃(设计参考了Kafka,ali-> Apache基金会)
    响应速度时延低(毫秒级)
    每秒钟大概能处理几十万条消息
    与周边生态系统的集成和兼容程度不够

    阿里巴巴的MQ中间件,在其多个产品下使用,并能够撑住双十一的大流量,他并没有实现JMS规范,使用起来很简单。部署由一个 命名服务(nameserver)和一个代理(broker)组成,nameserver和broker以及producer都支持集群,队列的容量受机器硬盘的限制,队列满后可以支持持久化到硬盘(也可以自己适配代码,将其持久化到NOSQL数据库中),队列满后会影响吞吐量,可以采用主备来保证稳定性,支持回溯消费,可以在broker端进行消息过滤。

    kafka(LinkedIn )

    由Scala 和 Java 开发
    生态兼容性好(大数据、流式计算)
    大约每秒钟可以处理几十万条消息
    有足够的客户端并发进行异步批量发送,并且开启压缩的情况下,Kafka 的极限处理能力可以超过每秒 2000 万条消息。
    同步收发消息的响应时延比较高,因为当客户端发送一条消息的时候,Kafka 并不会立即发送出去,而是要等一会儿攒一批再发送,在它的 Broker 中,很多地方都会使用这种先攒一波再一起处理的设计。当你的业务场景中,每秒钟消息数量没有那么多的时候,Kafka 的时延反而会比较高。所以,Kafka 不太适合在线业务场景。

    ZeroMQ

    号称最快的消息队列系统,尤其针对大吞吐量的需求场景。扩展性好,开发比较灵活,采用C语言实现,实际上只是一个socket库的重新封装,如果做为消息队列使用,需要开发大量的代码。ZeroMQ仅提供非持久性的队列,也就是说如果down机,数据将会丢失。其中,Twitter的Storm中使用ZeroMQ作为数据流的传输。

    ActiveMQ

    历史悠久的开源项目,是Apache下的一个子项目。已经在很多产品中得到应用,实现了JMS1.1规范,可以和spring-jms轻松融合,实现了多种协议,不够轻巧(源代码比RocketMQ多),支持持久化到数据库,对队列数较多的情况支持不好

  • 相关阅读:
    【数据结构】单链表
    Vue3异步组件和Suspense
    LeetCode 0670. 最大交换
    Python实现压缩和解压缩
    Web应用开发 - 实训三 B Servlet基础
    粒子群算法优化双向长短期记忆神经网络的多输入单输出回归分析,粒子群算法优化gru神经网络的多输入回归分析
    (29)语义分割--paddle--pp_liteseg
    区间预测 | Matlab实现CNN-ABKDE卷积神经网络自适应带宽核密度估计多变量回归区间预测
    前端与后端传递数据 — — JSON
    模型量化:轻量化你的深度学习模型
  • 原文地址:https://blog.csdn.net/qq_36535245/article/details/126379066