一、模式思想
所有的技术设计思想,基本都在两点上下功夫:1. 生产力上 2. 稳定性上
二、集群模式
今天又有人问起来rabbitmq的高可用方式,因为和常见的主从模式有点区别,所以就记录一下。
rabbitmq集群的镜像队列提供了更高级的主从备份,就是互为主备的主从队列:
rabbitmq-server为客户端提供了访问其中任何一个节点都能获取整个集群的元数据,所以生产者消费者是直观看到具体是连接到集群中的哪台机器,但可以肯定的是主队列接收exchange路由过来的消息,及推送消息给消费者,从队列是无法接收到exchange路由过来的消息的;但从队列可以接收主队列同步过来的消息,并提供给消费者。
总结来说就是rabbitmq的主从队列的角色:主队列提供读写消息的能力,从队列只提供读消息的能力。那如何理解互为主备的主从队列呢?
先看一张图:
三、主从下的生产消费者机制
生产:主负责生产
消费:主从都可以消费
leader除了负责写入消息,同步消息,选举还有可以接受读消息的职能。
Consumer应尽量连接每一个节点,从中读取消息,在集群高可用下提升生产力。所以从这一设计点来看,leader节点的也是负责消费消息的节点。
至于消息的消费打标,是通过中心化锁的机制来进行数据标记,然后主从状态同步通讯。
参考:https://www.cnblogs.com/gered/p/16466689.html