“φ累积怀疑把滑窗心跳间隔变成正态尾部评分,让两个消费者使用不同门槛;四份样本的尾0.01并不能推出真实停机后验为99%。SWIM探测与成员怀疑进一步复算间接回复、本人incarnation反…”
形式陈述
输出怀疑程度,而不替应用决定后果
故障检测器可以提供不可靠的观察。φ方法把“迟到多久”转换为连续评分,让多个应用各自选择阈值:暂停分配新任务可以较敏感,触发昂贵恢复可以较保守。评分和应用动作分开;一个较高的数字不自动成为接管锁、修改投票成员或释放远端资源的许可。
固定一个被监测的进程实例身份,监测者只读自己的单调时钟。心跳带严格增长的序号;本页允许消息丢失、重复与乱序,不考虑伪造发送者。只接受比当前最大序号更大的消息,过时和重复心跳不刷新last_received。换进程实例必须重新建立监测状态,不能沿用旧身份后悄悄把序号归零。
收到第一份有效心跳时只记到达时刻。以后每次新序号到达,记录距上次有效到达的间隔,保留最近W个间隔。附件取W=4;不足W份返回UNTRAINED,不把没有训练数据解释成低风险。间隔按实际接收时间计算,序号跳过两项也不把这一间隔除以三。
从窗口到尾部
设窗口为d₁,…,d_W,均为非负时间间隔。明确采用总体方差口径,并给正尺度下限s₀:
尺度下限是一项公开参数,防止等间隔样本使分母变成零;它不是从四份数据估计出的置信保证。原论文用滑窗估计正态分布。本页同样以N(μ,σ²)近似下一接收间隔,记生存函数
φ评分及消费者h的判定为
本页门槛h为1到12的整数。只查询评分不改变窗口或last_received。新心跳到达才更新样本,再从新的τ=0计算;不同消费者共享同一份窗口,却可以得到不同的布尔解释。[1,§IV]
正态近似给负间隔也分配少量概率,物理接收间隔却不为负。因此这里明确是拟合模型,不是真实间隔支持集的等式;μ相对σ很小时尤其要谨慎。τ=0的正态尾一般略小于1,φ也可能微正,本页不把它默认为抽象规格中的精确零重置。
直觉
同样等十五个单位,意义可以不同
若最近的间隔总在10附近,十五个单位的沉默比较反常;若最近经常间隔20,十五个单位还不算特别迟。φ把这份背景放进尺度,不只看本次等待的绝对长度。
取负十进制对数是为了把尾部量级变成容易比较的数字:模型尾0.1、0.01、0.001对应评分1、2、3。这个刻度描述“在所选到达模型下有多迟”,没有把进程崩溃的先验、网络分区和调度暂停自动整合成一个后验概率。
例子与边界
四个间隔与两位消费者
序号0、1、2、3、4分别在时刻0、8、16、28、40到达。第一次到达不产生间隔,最终窗口为8、8、12、12。和为40,平方和416,于是μ=10、v=104−100=4。取s₀=1,仍得σ=2。
冻结这份窗口,逐行算τ及尾部:
| 查询时刻 | τ | 模型尾S(τ),近似 | φ,近似 | h=1 | h=2 |
|---|---|---|---|---|---|
| 50 | 10 | 0.5 | 0.301030 | 未到门槛 | 未到门槛 |
| 54 | 14 | 0.0227501 | 1.643016 | 怀疑 | 未到门槛 |
| 55 | 15 | 0.00620967 | 2.206932 | 怀疑 | 怀疑 |
| 58 | 18 | 0.0000316712 | 4.499335 | 怀疑 | 怀疑 |
54时两应用的分歧是各自阈值不同,不是两份监测记录矛盾。提高h通常增加发现停机所需等待,同时减少模型内的迟到触发;实际网络是否遵从这份模型还需另行评估。
迟到心跳要改变分布,旧包则不能
60时有效序号5终于到达,新增间隔20。丢掉最早的8后,窗口为8、12、12、20,和52、平方和752,所以μ=13、v=188−169=19。
61时重到序号3或重复5,两者都忽略;last_received仍为60。75时τ=15,按新窗口得到φ≈0.490559,两个消费者都未到门槛。若没有重算分布,偷用旧μ=10、σ=2,会得到2.206932;若接受旧包刷新时刻,则又会把沉默人为缩短。这是两个独立错误。
同一时刻60若先查询、再交付新心跳,查询看到的是此前二十单位沉默,φ约6.542646;先交付再查询,看到的则是新窗口与τ=0。事件顺序属于执行,不把同刻事件凭空合成一个原子动作。
1%尾部不是99%的崩溃概率
另给一个简化的二假设模型:进程以先验π已经停止,故之后不会发来心跳;否则下一间隔按给定尾S分布。观察沉默到τ后,Bayes公式给
即便S=1/100完全已知,π=1/1000时结果为100/1099,约9.1%;π=1/2时却是100/101,约99.0%。同一个φ=2并没有决定后验。现实还可能有暂停、断网等更多原因;这份简例只用于指出缺失的信息,不教检测器凭样本猜先验。
训练与突变的代价
训练不足没有足够样本,UNTRAINED可能持续很久;生产系统需要另定启动策略。正尺度下限让零方差窗口仍可计算,却不能保证该下限适合网络。线路骤变或主机长暂停时,旧窗口可能给出频繁误判;把新长间隔纳入窗口又会使随后的阈值更宽松。
滑窗的W也有代价:小窗变化快,估计更抖;大窗较平稳,却保留较多旧环境。心跳丢失造成的长接收间隔本来就是观测的一部分,不能只保留“看起来正常”的短间隔,再把拟合尾部称为完整环境的迟到概率。
推论与应用
能从公式证明什么
没有新心跳时,当前窗口不变,μ和σ固定;S随τ严格下降,因此φ随等待增加。对这份非退化正态模型,S趋0,数学φ趋于无穷。监测进程还须实际获得执行机会,查询才能发出提示;一份尚未运行的计时器不会替暂停线程执行恢复。
这些性质没有推出最终准确性。即使每个活进程的间隔真是相互独立、参数已知的正态近似,某个固定h仍留有正的尾概率p。连续m次间隔都不触发该门槛的概率是(1−p)^m,趋于0;不能从“一次迟到机会很小”推出“以后永久不再误判”。真实滑窗还加入了参数估计误差和时序相关性。[1,§III与§IV是不同层次]
本页的职责是把观测变成可检查的统计评分。它既不证明旧故障检测器抽象对所有异步历史成立,也不把有限样例中恢复了低分当作对方已经完成某个业务操作的证明。
实际计算与数值出口
保存最近W份间隔、运行和及平方和,接收新心跳时减去最旧项再加入新项,局部更新只需常数次算术,存储O(W)。若每次为了审计复制完整窗口,另付O(1+W)日志成本。附件用精确有理数计算均值方差,避免把两个近似大数相减当作精确非负证明;位成本仍随数值长度增长。
附件接收时间限定为0到10⁹的整数本地tick,尺度下限也取1到10⁹的整数;这只是可执行练习的数值输入范围。尾部数值使用erfc而非先算接近1的CDF再相减。附件输出的φ是浮点近似,不是任意平台上的正确舍入认证;计算值与阈值相距至多10⁻⁹时返回NUMERIC_BOUNDARY,保留调用者决策。这个小保护带本身不是一份libm全域误差定理。主表中的判定与阈值有明显间隔,另用独立数值过程核对。
若标准化迟到z=(τ−μ)/σ≥12,参考器不继续求可能下溢的尾部,而报告φ>30。因为标准正态上尾满足Pr(Z>z)≤exp(−z²/2)/(z√(2π))<exp(−72)<10⁻³⁰,声明范围内h≤12均已达到。这里给的是有限下界,不把机器返回0的尾部冒充真实零概率。
完整窗口、两位消费者、重复消息及暂停次序见沉默证据终点。
参考资料
- [1] Naohiro Hayashibara、Xavier Défago、Rami Yared、Takuya Katayama,The φ Accrual Failure Detector,JAIST IS-RR-2004-010,2004-05-10;含仓储封面的PDF17页,§III在PDF7–9、§IV与式(2)–(4)在PDF9–10,PDF12说明实验排除暖机期。本文明确补出序号筛选、满窗出口、方差口径和尺度下限,不把这些教学参数声称为原文唯一默认值