知识卡片
镜像同步拖慢队列
内容
RabbitMQ master 必须把消息写入所有活着的镜像后才处理下一条消息,因此队列速度受最慢镜像限制,慢镜像或超时都会拖慢整体。发散:同步复制的性能上限常由尾部节点决定,而不是平均节点能力。
参考来源
- 位置:《分布式系统与一致性》第6章《消息系统RabbitMQ》"6.2.1 镜像复制"一节(源文件:_epub-src/OEBPS/Text/chapter10.xhtml)
- 结论依据:原文明确"RabbitMQ会把一条消息成功写入所有镜像后,才处理下一条消息……队列处理消息的快慢取决于写入最慢的镜像,如果某个镜像由于某种原因(比如CPU负载高)写入消息比较慢,那么即使其他镜像有足够的能力,这时整个队列处理消息也会比较慢"。
- 原始内容:RabbitMQ会把一条消息成功写入所有镜像后,才处理下一条消息……如果某个镜像宕机,那么master只能等待超时,把这个镜像剔除后,才能继续处理接下来的消息。还有一件重要的事情是,队列处理消息的快慢取决于写入最慢的镜像。