Gossip 与故障检测
在有数千个节点的数据中心里,一个节点宕机了,其他节点如何快速发现?如果用中心化的心跳机制,心跳中心本身就会成为单点瓶颈。如果用全广播,每个节点都要维护全量的节点列表,流量会爆炸。
Gossip 协议给出了一个优雅的答案:像流行病传播一样,让节点之间互相「八卦」,每个节点定期把自己知道的信息随机传播给少数几个邻居,病毒式地扩散到整个集群。
Gossip 的好处是去中心化(没有单点)、容错(节点随机失效不影响整体传播)、以及几乎恒定的网络开销。Cassandra 用 Gossip 做节点元数据同步,Consul 用 Gossip 做故障检测和成员管理,DynamoDB 的副本同步也部分借助了 Gossip 的思想。
故障检测是 Gossip 最重要的应用之一。一个节点到底是「宕机了」还是「只是网络慢」?Phi Accrual 故障检测器用概率模型来判断,比简单的「超时没响应」精确得多。
本模块将深入讲解 Gossip 协议的数学原理、收敛性保证,以及 Phi Accrual 和 SWIM 等故障检测算法的设计。