MQ-面试

2020-04-05  本文已影响0人  天凉好个秋灬

目的

解耦、异步、削峰

问题

比较

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副本机制、选举,保证高可用
上一篇 下一篇

猜你喜欢

热点阅读