• 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多),支持持久化到数据库,对队列数较多的情况支持不好

  • 相关阅读:
    Java - ReentrantLock锁分析
    SQL注入绕过安全狗的waf防火墙,这一篇就够了,8k文案超详细
    C/C++test——高效完成白盒测试
    SpringBoot中Filter和Interceptor快速入门
    Opencv cuda版本编译
    TCP/UDP协议传输
    TDengine 入门教程——导读
    Oracle故障诊断方法
    计算机毕业设计ssm协同过滤爱心公益管理系统73i8r系统+程序+源码+lw+远程部署
    我的创作纪念日
  • 原文地址:https://blog.csdn.net/qq_36535245/article/details/126379066