SWIM,或者称为可伸缩可传导的弱一致性进程组成员资格协议。它用来维护分布式系统中进程成员资格的协议。
成员资格协议让进程组中的每个进程在本地维护着一个该组未失效进程的列表,即成员列表。
因此,这个协议主要执行两个重要的操作:
检测失效节点,即如何识别出已经失效的进程
失效信息的广播,即如何通知整个系统中的其他进程哪些进程已经失效了。
那么毫无疑问的是:成员资格协议应该可伸缩型强,可靠性高,而且检测失效节点的速度快。成员资格协议的可伸缩型和执行效率主要由以下几个方面确定:
完备性:是不是每个失效的进程最终都能够检测到?
失效节点的检测速度:一个节点失效到它被非失效节点检测到的平均时间间隔是多长?
准确性:实际上进程未失效但却被认为是失效的频度(即误判率)是多少?
信息量:每个节点生成的网络通信的信息量有多大,它是否也是分布式的?
理想情况下,我们需要这样的协议:它一定要完全100%准确,这就意味着可以检测到每一个失效进程,而且不存在任何误判。然而,像分布式系统里的其他协议一样,存在这样的事实:在异步网络上保证100%的完备和准确是不可能的。因此许多成员资格协议(包括SWIM)为了完备性就会降低准确性,同时尽最大可能降低误判率。 |