大厂面试题-RabbitMQ如何实现高可用

本文详细介绍了RabbitMQ的两种集群模式(普通集群与镜像集群),强调了高可用性和性能之间的权衡。在面试中,掌握这些概念对于IT求职者至关重要。
摘要由CSDN通过智能技术生成

目录

考察目标

问题解析

普通集群模式

镜像集群模式

问题解答

    第一种是普通集群模式

    第二种是镜像集群模式


蜗牛学苑-重构IT职业教育新生态

考察目

这个问题就是简单的考察RabbitMQ相关知识点的了解。

难度并不大,主要考察3年以上开发经验的同学。

但是这个问题只是一个切入点,我认为接下来会根据求职者的背景

针对这个问题做更进一步去深度考察。

题解析

在分式架构下 ,高可用是最基础的设计。

就是说,一旦依赖的某个服务出现故障,不能影响业务的正常执行。

RabbitMQ提供了两种集群模式:

    1、普通集群模式

    2、镜像集群模式

普通集群模式

这种集模式下,各个节点只同步元数据,不同步队列中的消息。

其中元数据包含队列的名称、交换机名称及属性、交换机与队列的绑定关系等。

当我们发消息和消费消息的时候,不管请求发送到RabbitMQ集群的哪个节点。最终都会通过元数据定位到队列所在的节点去存储以及拉取数据。

很显然,这种集群方式并能保证Queue的高可用,因为一旦Queue所在的节点挂,那么这个Queue消息就没办法访问了。

它的好处是通过多个节点分担了流量的压力,提升了消息的吞吐能力。

镜像集群模式

它和普通集群的区别在于,镜像集群中Queue的数据会在RabbitMQ集群的每个节点存储一份。

一旦任意一节点发生故障,其他节点仍然可以继续提供服务。

以这种集群模式实现了真正意义上的高可用。

最后,在镜像集群的模式下,我们可以通过Keepalived+HAProxy来实现RabbitMQ集群的负载均衡(如图)

其中

    1、HAProxy是一个能支持四层和七层的负载均衡器,可以实现对RabbitMQ集群的负载均衡

    2、同时为了避免HAProxy的单点故障,可以再增加Keepalived实现HAProxy的主备,如果HAProxy主节点出现故障那么备份节点就会接管主节点提供服务。

Keepalived供了一个虚拟IP,业务只需要连接到虚拟IP即可。

这就是RabbitMQ的常见高可用实现方案。

那么在试的时候,怎么回答比较好呢?

问题解答

RabbitMQ高可用实现方式有两种

    第一种是普通集群模式

在这种模式下,一个Queue的消息只会存在集群的一个节点上,集群里面的其他点会同步Queue所在节点的元数据,消息在生产和消费的时候,不管请求发送到集群的哪个节点,最终都会路由到 Queue 所在节点上去存储和拉取消息。

这种方式并不能保证Queue的高可用,但是它可以提升RabbitMQ的消息吞吐能力

    第二种是镜像集群模式

也就是集群里面的每个节点都会存储Queue的数据副本。

味着每次生产消息的时候,都需要把消息内容同步给集群中的其他节点。

这种方式能够保证Queue的高可用性,但是集群副本之间的同步会带来性能的损耗。另外,由于每个节点都保存了副本,所以我们还可以通过HAProxy实现负载均衡。

蜗牛学苑-重构IT职业教育新生态

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值