RabbitMQ集群

布满荆棘的人生 2022-03-29 04:54 427阅读 0赞

一、RabbitMQ集群概述

rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式

1、单机模式:

  1. 本地测试用、生产环境不会用

2、普通集群模式:

  1. 意思就是在多台机器上启动多个rabbitmq实例,每个机器启动一个。但是你创建的queue
  2. 只会放在一个rabbtimq实例上,但是每个实例都同步queue的元数据、消费的时候、会从queue所在实例上拉取数据过来、
  3. 前者有数据拉取的开销,后者导致单实例性能瓶颈。

3、**镜像集群模式(适用)**

  1. 这种模式,才是所谓的rabbitmq的高可用模式,跟普通集群模式不一样的是,你创建的queue
  2. 无论元数据还是queue里的消息都会存在于多个实例上,然后每次你写消息到queue的时候,
  3. 都会自动把消息到多个实例的queue里进行消息同步。这样一台机器挂了、别的机器可以用。
  4. RabbitMQ管理控制台新增一个策略、
  5. 这个策略是镜像集群模式的策略,指定的时候可以要求数据同步到所有节点的,也可以要求就同步到指定数量的节点,
  6. 然后你再次创建queue的时候,应用这个策略,就会自动将数据同步到其他的节点上去了。

3.1、RabbitMQ集群元数据的同步

  1. RabbitMQ集群会始终同步四种类型的内部元数据(类似索引):
  2. a.队列元数据:队列名称和它的属性;
  3. b.交换器元数据:交换器名称、类型和属性;
  4. c.绑定元数据:一张简单的表格展示了如何将消息路由到队列;
  5. d.vhost元数据:为vhost内的队列、交换器和绑定提供命名空间和安全属性;
  6. 因此,当用户访问其中任何一个RabbitMQ节点时,通过rabbitmqctl查询到的queueuserexchange/vhost等信息都是相同的。

3.2、为何RabbitMQ集群仅采用元数据同步的方式

  1. 第一,存储空间,如果每个集群节点都拥有所有Queue的完全数据拷贝,
  2. 那么每个节点的存储空间会非常大,集群的消息积压能力会非常弱(无法通过集群节点的扩容提高消息积压能力);
  3. 第二,性能,消息的发布者需要将消息复制到每一个集群节点,
  4. 对于持久化消息,网络和磁盘同步复制的开销都会明显增加。

3.3、RabbitMQ保证不消费重复数据

  1. 消费者每次执行查询前,首先在DB上查询任务的执行状态,若处于「取消/失败/成功」
  2. 则表示已经由其它消费者消费过,那么直接返回ACK状态码给MQ,将消息从MQ中移除;

3.4、保证消息的顺序性

  1. rabbitmq:拆分多个queue,每个queue一个consumer,就是多一些queue而已,确实是麻烦点;
  2. 或者就一个queue但是对应一个consumer,然后这个consumer内部用内存队列做排队,然后分发给底层不同的worker来处理

图解:连接的节点2或者节点3,那这两个节点也会作为路由节点起到转发作用,将会从节点1的队列1中拉取消息进行消费

watermark_type_ZmFuZ3poZW5naGVpdGk_shadow_10_text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3Nzd3F6eA_size_16_color_FFFFFF_t_70

二、RabbitMQ集群的搭建

在搭建RabbitMQ集群之前有必要在每台虚拟机上安装如下的组件包,分别如下:
a.Jdk 1.8
b.Erlang运行时环境
c.RabbitMq的Server组件

。。。。。。。。。。。。。

发表评论

表情:
评论列表 (有 0 条评论,427人围观)

还没有评论,来说两句吧...

相关阅读

    相关 RabbitMQ

    RabbitMQ集群 在RabbitMQ集群里,运行时状态包含交换器、队列、绑定器、用户、虚拟主机以及策略,它们对所有节点都可用。 这种共享运行时状态的特性,使得集群

    相关 RabbitMQ安装

    一、准备两台虚拟机 1、设置一台的别名为A,:`vi /etc/hostname` 2、设置另一台的别名为B:`vi /etc/hostname` 3、修改每一个虚

    相关 rabbitmq 部署

    rabbitmq 目前的主要功能是: 1.用作消息队列,发送消息,接受消息 2.用作websocket主动推送引擎,与web端建立长链接 为什么要用到rabbitmq 集

    相关 RabbitMQ

    一、RabbitMQ集群概述 rabbitmq有三种模式:单机模式,普通集群模式,镜像集群模式 1、单机模式: 本地测试用、生产环境不会用 2、普通集

    相关 rabbitmq简介

    rabbitmq自带内建集群,其旨在rabbitmq的高可用,允许消费者和生产者在rabbitmq节点崩溃的情况下继续运行,以及通过添加更多节点的方式来线性扩展消息的吞吐量。但