知识卡片
宕机和运维取舍不同
内容
RabbitMQ 意外宕机时默认偏向尽快选新 master 保持可用;主动运维时默认只让同步镜像接管以减少数据丢失。发散:同一个系统可以按故障类型选择不同策略,自动故障和计划变更不必共享同一风险偏好。
参考来源
- 位置:《分布式系统与一致性》第6章《消息系统RabbitMQ》"6.3.3 意外宕机与主动运维的默认行为差异"一节(源文件:_epub-src/OEBPS/Text/chapter10.xhtml)
- 结论依据:原文明确"RabbitMQ在发生master宕机和发生主动运维操作时的默认行为正好是相反的——在宕机处理上,保证的是RabbitMQ尽量可用;在主动运维时,则保证的是数据尽量不丢失"。
- 原始内容:如果master所在的broker发生宕机,则最早加入这个队列的镜像会成为新的master,但是该镜像不一定达到同步状态……当主动关机时……RabbitMQ只会让具有同步状态的镜像中最早加入队列的那个镜像成为新的master……可以看出,RabbitMQ在发生master宕机和发生主动运维操作时的默认行为正好是相反的——在宕机处理上,保证的是RabbitMQ尽量可用;在主动运维时,则保证的是数据尽量不丢失。