前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面试题-MQ(二)

面试题-MQ(二)

作者头像
小土豆Yuki
发布2024-01-22 16:13:25
710
发布2024-01-22 16:13:25
举报
文章被收录于专栏:洁癖是一只狗洁癖是一只狗

面试题:如何提高MQ的可用性

这个问题,并不是让我回答多有的mq,如何保证可用性,只要我们把我们自己公司或者熟悉的mq的可用性说清楚,就可以了,

我们就拿rabbitMQ和kafka举例

rabbitMQ,有三种模式,单机模式,集群模式,镜像模式

单机模式:主要用于我们自己私下开发自己玩的,练习语法之类的东西,不能保证可用性

集群模式:这种相当于多个节点,比如我们有三个节点A,B,C,按个节点保存这个同样的元数据,比如,队列名字,topic等等,但是其中一个节点B的队列保存所有的数据数据,其他三个节点不保存数据,如果我们连接到了A节点消费数据,实际上最终还是会到B节点获取到数据

这种模式,实际上不是分布式集群,所有的数据集中在一个节点,当这个节点宕机之后,我们的集群就不可能消费到数据了,并且所有数据集中到一个节点,也是一个数据瓶颈,基本公司都会用这种,这种最大的好处,就是可以提高吞吐量

镜像模式:这种才算是rabbitmq的高可用,他会在每个节点保存所有的元数据,和消息数据,当我们在某个节点上,生产一个消息之后,也会同步到其他节点,这样保证了所有数据会有多份数据,因此这样也导致了资源的浪费,且同步消息也带来了开销,扩展性也不好,加机器也是要包含所有的数据,

kafka高可用

kafka是一种分布式集群,他是有多个broker组成,每个broker相当一个节点,我们创建一个topic,可以分为多个partition,每个partition保存一部分数据,每个partition放在不同的broker

这种天然的保证了高可用,数据分散在不同的机器,并且每个分区partition有自己的副本,这个副本相当保存这个同样的数据,当主partition,即leder分区所在的机器宕机之后,其他机器也会存放他的副本,

当我们写数据的时候,会写到我们的主partition分区,这个其实叫做leader,写完之后,会同步到其他副本即follower,这个时候就会返回给生产者ack响应,

当我们消费的时候,也只会从leader读取消息,基于这些东西,我们的kafka才能保证高可用,容错性,其中副本的能力是在kafka0.8之后才有的

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2024-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 洁癖是一只狗 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档