• RabbitMq、ActiveMq、ZeroMq、kafka各个消息中间件之间的区别


    MQ框架非常之多,比较流行的有RabbitMq、ActiveMq、ZeroMq、kafka。这几种MQ到底应该选择哪个?要根据自己项目的业务场景和需求。

    第一部分:RabbitMQ,ActiveMq,ZeroMq比较:

    1、 TPS比较

      ZeroMq 最好,RabbitMq 次之, ActiveMq 最差。

    2、持久化消息比较

          zeroMq不支持,activeMq和rabbitMq都支持。持久化消息主要是指:MQ down或者MQ所在的服务器down了,消息不会丢失的机制。

    3、技术点:可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统、社区

          RabbitMq最好,ActiveMq次之,ZeroMq最差。当然ZeroMq也可以做到,不过自己必须手动写代码实现,代码量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用性。

          所以在可靠性和可用性上,RabbitMQ是首选,虽然ActiveMQ也具备,但是它性能不及RabbitMQ。

     4、高并发

      从实现语言来看,RabbitMQ最高,原因是它的实现语言是天生具备高并发高可用的erlang语言。

    来自:https://blog.csdn.net/qq_35873847/article/details/78737796

    第二部分:kafka和RabbitMQ的比较

    1、  RabbitMq比kafka成熟,在可用性上,稳定性上,可靠性上,RabbitMq超过kafka

    2、  Kafka设计的初衷就是处理日志的,可以看做是一个日志系统,针对性很强,所以它并没有具备一个成熟MQ应该具备的特性

    3、  Kafka的性能(吞吐量、tps)比RabbitMq要强,

    来自:https://blog.csdn.net/qq_35873847/article/details/78737796

    第三部分:RabbitMQ 选型和对比

    1.从社区活跃度

    按照目前网络上的资料,RabbitMQ 、activeM 、ZeroMQ 三者中,综合来看,RabbitMQ 是首选。 

    2.持久化消息比较

    ZeroMq 不支持,ActiveMq 和RabbitMq 都支持。持久化消息主要是指我们机器在不可抗力因素等情况下挂掉了,消息不会丢失的机制。

    3.综合技术实现

    可靠性、灵活的路由、集群、事务、高可用的队列、消息排序、问题追踪、可视化管理工具、插件系统等等。

    RabbitMq / Kafka 最好,ActiveMq 次之,ZeroMq 最差。当然ZeroMq 也可以做到,不过自己必须手动写代码实现,代码量不小。尤其是可靠性中的:持久性、投递确认、发布者证实和高可用性。

    4.高并发

    毋庸置疑,RabbitMQ 最高,原因是它的实现语言是天生具备高并发高可用的erlang 语言。

    5.比较关注的比较, RabbitMQ 和 Kafka

    RabbitMq 比Kafka 成熟,在可用性上,稳定性上,可靠性上,  RabbitMq  胜于  Kafka  (理论上)。

    另外,Kafka 的定位主要在日志等方面, 因为Kafka 设计的初衷就是处理日志的,可以看做是一个日志(消息)系统一个重要组件,针对性很强,所以 如果业务方面还是建议选择 RabbitMq 。

    还有就是,Kafka 的性能(吞吐量、TPS )比RabbitMq 要高出来很多。

    选型最后总结:

    如果我们系统中已经有选择  Kafka  ,或者   RabbitMq  ,并且完全可以满足现在的业务,建议就不用重复去增加和造轮子。

    可以在  Kafka  和   RabbitMq  中选择一个适合自己团队和业务的,这个才是最重要的。但是毋庸置疑现阶段,综合考虑没有第三选择。

    来自:https://www.sojson.com/blog/48.html

    第四部分:对比图

    来自:https://blog.csdn.net/zhengholien/article/details/77911902

  • 相关阅读:
    使用postman模拟上传文件到springMVC的坑:the request was rejected because no multipart boundary was found
    win10 安装多个版本的jdk,如何切换
    String类的substring方法
    tomcat7.0配置CORS(跨域资源共享)
    win7下安装centos6.5后,开机无法进入选择双系统启动界面,只能启动centos的解决办法
    java位运算
    JDK源码--ArrayList浅析
    使用Jasperreporter生成入库出库单打印等报表操作
    centos6.5下安装zip格式的tomcat7和tomcat8,并同时运行
    Centos7配置文件共享服务器SAMBA三步曲(转)
  • 原文地址:https://www.cnblogs.com/tutubaobao/p/10044194.html
Copyright © 2020-2023  润新知