MQ-面试

目的

解耦、异步、削峰

问题

  • 系统可用性降低,增加了mq环节,mq挂掉导致整个系统挂掉
  • 系统复杂度提高,需要针对mq增加各种考虑
  • 一致性问题

比较

ActiveMQ RabbitMQ RocketMQ Kafka
吞吐量 万级吞吐量 万级吞吐量 十万级吞吐量 十万级吞吐量
topic对吞吐量的影响 topic可以达到几百,几千个的级别时吞吐量会有较小幅度的下降 topic从几十到几百的时候,吞吐量会大幅下降,所以同等机器下,保证topic数量不要过多
响应 ms级响应 微秒级响应,延迟最低 ms级响应 ms级响应
高可用 高可用,基于主从架构实现 高可用,基于主从架构实现 非常高,分布式架构 非常高,分布式架构,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用
数据安全 较低概率丢失消息 一般不会丢失消息 经过参数优化配置,可以做到0丢失 经过参数优化配置,可以做到0丢失
功能 MQ领域的功能极其完备 基于erlang开发,并发能力很强,性能及其好,延时很低,MQ领域的功能比较完备 MQ功能较为完备 功能很简单,简单的MQ功能,在大数据领域的实时计算以及日志采集被大规模使用,是事实上的的标准
总结 非常成熟,业内大量公司使用,但是社区不活跃,版本越来越少,主要基于解耦与异步来用,很少用于大规模吞吐的场景 开源管理管理系统非常好用,社区比较活跃,更新维护频繁,国内近几年用的比较多,但因为是erlang开发,普通公司玩不转,吞吐量只有万级 接口易用,阿里开源,品质保障,社区活跃,支持复杂的业务场景,吞吐量特别大,分布式架构,但会有项目黄了的风险 功能少,吞吐量超高,易于拓展

高可用

RabbitMQ

  1. 单机模式
    • demo级别,本地启动玩玩
  2. 普通集群模式
    • 多台机器上启动多个实例,每个机器上一个,但是创建的queue只会放在一个实例上,其他实例只同步这个queue的元数据
    • 缺点:可能会在集群内部产生大量数据的传输,可用性没有保障,queue所在节点宕机,queue里的数据就会丢失
  3. 镜像集群模式
    • 实现高可用,每个实例都会同步queue的全部信息
    • 缺点:性能开销太大,没有扩展性可言,网络压力和消耗很重
    • 管理控制台,可以增加策略,按照镜像集群模式开始

Kafka

  1. 没台机器启动一个borker进程,可以认为是Kafka的一个节点
  2. 按照topic划分partition,实现分布式
  3. leader、follower、replica副本机制、选举,保证高可用
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 本文主要介绍MQ高可用性、消息幂等性、消息丢失的问题。 为什么使用消息队列?解耦、异步、削峰 如何保证消息队列的高...
    Y了个J阅读 2,103评论 0 0
  • 学习 1、MQ消息队列分类有哪些? 消息队列分类:点对点和发布/订阅两种: 1.1、点对点: 支持此模式:rabb...
    Hibug阅读 1,119评论 0 4
  • 转载自:https://www.jianshu.com/p/859eba791f2b 概述 大家平时也有用到一些消...
    星海辰光大人阅读 1,336评论 0 11
  • 结束跨年游。 回到有烟火的人间,思维凌乱。 2018过去一年里,我做了太多的事情~ 拿到机构牌照,开启了正常运营和...
    跑步老奶奶阅读 204评论 0 0
  • 纸条: 习惯就像落进湖里的新雪,一开始,雪落无痕;只有积累到一定程度,才会结成坚冰。 第一周因为是尝鲜期,很多计划...
    在下小四爷阅读 204评论 0 3