【RabbitMQ 的高可用性——三种模式】

RabbitMQ 的高可用性

RabbitMQ的高可用主要是基于主从(非分布式)是架构做高可用;
RabbitMQ 有三种模式:单机模式、普通集群模式、镜像集群模式; 	
单机模式:
单机模式就是demo级别的,本地启动玩玩就行,不能用在线上环境;
普通集群模式(无高可用)
	普通集群模式简单的讲就是在多台机器上分别安装rabbitmq服务,然后在多台机器上分分别启动rabbitmq实例,
创建好的queue只会放在其中一个rabbitmq实例上,其他每个实例都会同步这个queue上的元数据(元数据可以
认为是queue的一些配置信息,通过元数据可以找到queue所在的实例),你消费数据的时候,如果是连接到了其他
实例,那么该实例还是要queue所在的实例上拉取数据。

在这里插入图片描述
这种方式并不能做到高可用,仅仅是个普通的集群,只能提高吞吐量。这种集群消费者消费数据要么就是随机连接一个机器拉取数据,要么固定来接queue所在实例获取数据,但是都不能做到高可用,·前者数据获取会产生大量的网络开销,后者会产生单节点性能瓶颈。如果放 queue 的实例宕机了,会导致接下来其他实例就无法从那个实例拉取,如果你开启了消息持久化,让 RabbitMQ 落地存储消息的话,消息不一定会丢,但是必须要等这个实例恢复了,才可以继续从这个 queue实例拉取数据。

镜像集群(高可用集群)
镜像集群才是RabbitMQ所谓的高可用集群模式,镜像集群与普通集群的区别就在于镜像集群模式下,创建的queue,
不管是元数据还是queue的data都会存在于多个实例节点上,每个RabbitMQ节点上都会有一个完整的queue镜像,
每次把数据写到queue里的时候,都会自动同步消息到每个queue的节点上。

在这里插入图片描述
如果要开启镜像模式,就是在后台新增一个策略,这个策略是镜像集群模式的策略,指定的时候是可以要求数据同步到所有节点的,也可以要求同步到指定数量的节点,再次创建 queue 的时候,应用这个策略,就会自动将数据同步到其他的节点上去了。
**镜像模式的优点:**任何一个机器宕机,其他机器任然可以使用。
**镜像模式的缺点:**1、所有机器之间进行数据同步,增加性能开销,网络带宽压力大。2、可扩展性差,如果某个queue负载很重,你加机器,新增的机器也包含了这个queue的所有数据,并没有办法线性扩展你的queue。 RabbitMQ 集群之镜像同步.

关于RabbitMQ镜像对了,推荐一篇非常好的文章 RabbitMQ镜像队列实现原理.

  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值