The Φ Accrual Failure Detector机制学习总结

背景

众所周知,故障检测(failure detector)是分布式系统的基础模块,用于探测各种服务、节点、进程等状态。在分布式环境下应用需要调整故障检测以适用于不同的QOS需求,而传统的故障探测算法只能提供bool结果对探测进行决断。传统的探测方法主要通过周期心跳HeartBeat和超时时间Timeout处理,当在固定Timeout时间内没有收到心跳则断定该节点失效并进行相关逻辑处理。那么问题来了:这个TImeout设置为多久呢?Timeout和HeartBeat的关系如何?不同环境下网络等都可能不同,如何在不同环境下对Timeout进行设置呢?心跳信号过短是不是会造成网咯拥塞?

Accrual Failure Detector是日本的学着Naohiro Hayashibara等人提出的失败探测算法,国内暂时对该算法没有很好的中文定义,从其实现来看暂且定义为:累积型失败探测(对历史数据进行累积与分析)。

Accrual failure detector(累积型失败探测)的创新在于:产生结果是被监测的节点或服务失效(crash)的置信度(the degree of confidence),置信度是随着时间变化的连续的值。累积型失败探测通过一个固定大小窗口(WS)存储收到心跳信号的间隔时间,通过这个窗口对心跳信号均值及方差进行分析,生成一个置信度。分布式应用可以根据自身的QOS需求定义适合自己的suspicion threshold(可信度阈值),定义一个较低的threshold会导致探测到一个real creash时间短,但是其正确性不高;定义一个较高的 threshold会导致特测到real crash的时间长,但是其正确性高。

Accrual Failure Detector应用举例。在一个分布式系统中,有一个master server和多个worker server, master server需要把很多job分发到worker server上。很显然,master server需要探测worker server的状态。利用Accrual failuer detector,当某个worker server的置信度达到low threshold时,master server不向此worker server派发新的job;当置信度达到moderate threshold时,master server会把在此woker server上的job派发到其它的worker server;当置信度达到high threshold,master server会把释放关于此worker server的通信资源(比如关闭socket)。

上一篇:机器人的运动范围


下一篇:Halcon OSTU算法