【RabbitMQ】MQ主流消息中间件对比

首先说下一为什么使用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

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值