当前位置:   article > 正文

【RabbitMQ】MQ主流消息中间件对比_mq的server是zk吗

mq的server是zk吗

首先说下一为什么使用MQ:

  1. 解耦,系统A在代码中直接调用系统B和系统C的代码,如果将来D系统接入,系统A还需要修改代码,过于麻烦!
  2. 异步,将消息写入消息队列,非必要的业务逻辑以异步的方式运行,加快响应速度
  3. 削峰,并发量大的时候,所有的请求直接怼到数据库,造成数据库连接异常

然后衡量MQ标准的指标:服务性能、可靠性、数据存储、集群架构


ActivitiMQ

  概念: Apache流行的开源消息总线,支持JMS规范
  优点: API丰富;集群架构模式多种
  缺点: 在如今的高并发,大数据处理的场景下显得力不从心,经常会出现一些小问题,消息延迟,堆积,堵塞等
  适用情况: 小型企业
在这里插入图片描述

  master-slave模式: 通过zk确立一个主节点,主节点对外提供服务,从节点不对外提供服务。当主节点不可用,另外一个节点就转成主节点,对外提供服务,已达到高可用的目的。

  network模式: 就相当于两组master-slave组合在一起

kafka

  概念: 是LinkedIn开源的分布式发布-订阅消息系统,目前归属于Apache顶级项目
  优点: 基于pull模式来处理消息消费,支持高吞吐量
  缺点: 不支持事务;对消息的重复、丢失、错误没有严格要求
  适用情况: 产生大量数据的互联网服务的数据收集业务

在这里插入图片描述
    Kafka集群也是采用zk进行集群,当一个数据存放在一个节点中,会通过relicate同步到其他节点,所以我们不需要更多的关注kafka有可能丢失消息,因为其他节点会有这份数据,除非你这个地区的kafka都挂了。可靠性高的场景不适用

RocketMQ

  概念: 是阿里开源的消息中间件,目前是Apache顶级项目
  优点: 纯java开发,高吞吐量、高可用、对kafka缺点做了优化(消息的可靠性传输和事务性做了优化)
  缺点: 不开源
  适用情况: 大规模分布式系统
在这里插入图片描述
  RocketMQ集群它刚开始也是依赖zk做集群的,但是觉得太慢就自己开发了Name Server

RabbitMQ

  概念: 使用Erlang语言开发,基于AMQP协议
  优点: 支持数据一致性,稳定性,可靠性,高吞吐量
  缺点: 性能比不上kafka,但是也很高了
  适用情况: 均适用
在这里插入图片描述



美文推荐(内容很好): https://my.oschina.net/blogByRzc/blog/3012251

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/192875
推荐阅读
相关标签
  

闽ICP备14008679号