在一个RabbitMQ Quorum队列(使用筏)集群中,比如说4个节点(N1-N4),
我可以有一个只能从N1/N2读取的消费者吗?在这种情况下,在N3中产生的消息是否会通过N1/N2传递给消费者?
根据以下帖子的文档:https://www.cloudamqp.com/blog/2019-04-03-quorum-queues-internals-a-deep-dive.html
使用Raft,所有的读和写都要经过一个leader,leader的工作是将写复制给它的followers。当客户端尝试读/写跟随者时,它被告知领导者是谁,并被告知将所有写入发送到该节点。领导者将仅在仲裁节点确认它们已将数据写入磁盘后才确认向客户端的写入。一个quorum就是节点的大多数
如果是这样的话,如果只有领导者节点来做所有的工作,那么如何实现缩放呢?
1条答案
按热度按时间ffscu2ro1#
首先,RabbitMQ集群应该有奇数个节点,这样在网络分区的情况下总是可以建立多数。
消费者始终可以从RabbitMQ集群中的任何节点读取数据。如果使用者连接的节点上没有运行队列主服务器/镜像服务器,则通信将转发到另一个节点。
如果只有leader节点来做所有的工作,那么如何实现缩放呢?
“缩放”是一个非常不具体的词,我犹豫着回答这个问题。但我假设您是在问多个仲裁队列会发生什么情况。答案是每个队列都有自己的领导者,这些领导者分布在集群周围。