在说4个节点(N1-N4)的RabbitMQ仲裁队列(使用木筏)中,
我可以有一个只能读取N1 / N2的使用者吗?在这种情况下,是否会通过N1 / N2将在N3中生成的消息传递到消费?
根据以下文章中的文档:https://www.cloudamqp.com/blog/2019-04-03-quorum-queues-internals-a-deep-dive.html
[使用Raft,所有读写操作都要经过一个负责人,将写入内容复制到其关注者。当客户尝试读/写给跟随者,被告知领导者是谁,并被告知将所有写入发送到该节点。组长只会确认写一旦达到法定数量的节点确认它们已经写入客户端数据到磁盘。仲裁只是节点的多数]
如果是这种情况,仅由领导者节点来完成所有工作,如何实现扩展?
首先,RabbitMQ群集应具有奇数个节点,以便在发生网络分区时始终可以建立多数节点。
消费者始终可以从RabbitMQ集群中的任何节点读取。如果在与使用者连接的节点上未运行队列主/镜像,则通信将转发到另一个节点。
如果仅仅是领导者节点,如何实现扩展完成所有工作吗?
“ scaling”这个词非常具体,我犹豫要回答这个问题。但是我假设您是在问多个仲裁队列会发生什么。答案是每个队列都有自己的领导者,并且这些领导者分布在集群中。
NOTE: RabbitMQ团队监视rabbitmq-users
mailing list,并且有时仅在StackOverflow上回答问题。