建站智能模板,中国建设工程招聘信息网站,厦门网站建设技术支持,wordpress如何让标签大小一致目录
一、RabbitMQ 集群
1.1、前言
1.2、普通集群
1.3、镜像集群
1.4、仲裁队列 一、RabbitMQ 集群 1.1、前言
前面我们已经解决了消息可靠性问题#xff0c;以及延迟消息问题 和 消息堆积问题.
这最后一章#xff0c;我们就来解决以下 mq 的可用性 和 并发能力. 1.2、…目录
一、RabbitMQ 集群
1.1、前言
1.2、普通集群
1.3、镜像集群
1.4、仲裁队列 一、RabbitMQ 集群 1.1、前言
前面我们已经解决了消息可靠性问题以及延迟消息问题 和 消息堆积问题.
这最后一章我们就来解决以下 mq 的可用性 和 并发能力. 1.2、普通集群
普通集群也叫做标准集群classic cluster它具备以下特征
1. 集群中的各个节点是可以共享数据的比如交换机信息、队列元信息但不包含队列中的消息.
什么是元信息 元信息就是指队列的描述信息队列名、队列在哪一个节点中但是不包括消息本身.
不包括消息本身是什么意思 假设我现在两个节点 mq1 和 mq2然后有一个消费者订阅了 mq2 中的一个队列但是呢这个消费者在访问的时候不想小心访问到了 mq1不过由于在 mq1 上持有 mq2 的元信息所以他知道 mq2 在哪因此就可以通过这个元数据找到 mq2 这个节点然后拿到我们想要的数据这就类似于 mq1 上有 指向 mq2 的指针通过指针就可以找到 mq2. 2. 基于第一个特点的元信息我们就可以在访问集群中的某个节点时发现队列不在该节点就可以通过要访问数据的所在节点的元信息进一步的拿到这个节点的所有数据.
这一点上面以及解释的很清楚了. 3. 如果队列所在节点宕机那么消息就会丢失.
这里有点类似于 redis 集群中的分片处理每一个集群上存储全集队列的一部分队列因此这个节点挂了消息必然会丢失. 1.3、镜像集群
镜像集群本质上就是主从模式.
主要有以下几个特性
1.交换机、队列、队列中的消息会在各个mq的镜像节点之间同步备份
这里就和之前的普通交换机不一样了不仅仅是交换机可以共享队列中的消息大家也可以共享了.
2. 创建队列的节点被称为该队列的主节点备份到的其它节点叫做该队列的镜像节点。
比如我现在有三个节点现在我再 mq1 上创建了一个队列 q1因此 mq1 就是主节点那么还可以给他挑一个镜像节点比如我再 mq2 上做一个镜像那么 mq2 就会去找 mq1 同步 q1 的所有数据.
3. 一个队列的主节点可能是另一个队列的镜像节点
也就是说主节点和镜像节点是可以相互备份的.
比如 q1 在 mq1 上给 mq2 备份了一份q2 实在 mq2 上给 mq3 备份了一份q3 在 mq3 上的给 mq1 备份了一份那么这个时候mq1 就是 q1 的主节点同时也是 q3 的镜像节点.
4. 所有操作都是主节点完成然后同步给镜像节点
5.主宕机后镜像节点会替代成新的主 1.4、仲裁队列
仲裁队列仲裁队列是3.8版本以后才有的新功能用来替代镜像队列具备下列特征
与镜像队列一样都是主从模式支持主从数据同步使用非常简单没有复杂的配置主从同步基于Raft协议强一致 在 SpringAMQP 中创建仲裁队列
Bean
public Queue quorumQueue() {return QueueBuilder.durable(quorum.queue) // 持久化 .quorum() // 仲裁队列.build();
}SpringAMQP连接集群只需要在yaml中配置即可
spring:rabbitmq:addresses: 192.168.150.105:8071, 192.168.150.105:8072, 192.168.150.105:8073username: rootpassword: 1111virtual-host: /