知识卡片
网络分区判定窗口的推导逻辑
内容
RabbitMQ集群节点间每隔net_ticktime的四分之一互相打一次心跳(tick),如果某节点连续4次未被打上标记就判定其已挂。由于tick间隔本身允许有误差,连续4次tick累计耗费的时间T的取值范围是0.75×net_ticktime到1.25×net_ticktime——默认net_ticktime为60秒,因此实际判定网络分区的等待时间落在45到75秒之间,而不是一个精确的60秒。发散:任何”连续N次未响应才判定失联”的探活机制,最终的等待时间窗口都不会是一个点值,而是由单次间隔误差累积出的区间——理解这一点能避免把配置参数误当成精确的超时阈值来使用。
参考来源
《RabbitMQ实战指南》第10章《网络分区》