Gossip和故障检测,如何保证信息传播可靠?
避免依赖单点视图做出决策的方法之一是Gossip式的故障检测服务,它使用Gossip来收集和分发相邻进程的状态。
每个成员维护一个其他成员的列表:它们的心跳计数器和时间戳。时间戳列出了心跳计数器上次递增的时间。每个成员定期递增其心跳计数器,并将其列表分发给随机相邻节点。在接收到消息时,相邻节点将列表与它自己的列表进行合并,更新其他相邻节点的心跳计数器。
节点还定期检查状态列表和心跳计数器。如果任何节点在足够长的时间里没有更新其计数器,就认为它发生了故障。超时时间应当谨慎选择,以将误报的概率降至最低。成员之间通信的频率是有上限的,并且最多可以随着系统中的进程数线性增长。
通过这样的方式,我们就可以检测出崩溃的以及任何其他集群成员都无法访问的节点。这个决策是可靠的,因为集群的视图是来自多个节点的聚合。如果两台主机之间的链路出现故障,心跳仍然可以通过其他进程传播。使用Gossip来传播系统状态增加了系统中的消息数量,使得信息传播更可靠。
评论
有用 1
避免依赖单点视图做出决策的方法之一是Gossip式的故障检测服务,它使用Gossip来收集和分发相邻进程的状态。
每个成员维护一个其他成员的列表:它们的心跳计数器和时间戳。时间戳列出了心跳计数器上次递增的时间。每个成员定期递增其心跳计数器,并将其列表分发给随机相邻节点。在接收到消息时,相邻节点将列表与它自己的列表进行合并,更新其他相邻节点的心跳计数器。
节点还定期检查状态列表和心跳计数器。如果任何节点在足够长的时间里没有更新其计数器,就认为它发生了故障。超时时间应当谨慎选择,以将误报的概率降至最低。成员之间通信的频率是有上限的,并且最多可以随着系统中的进程数线性增长。
通过这样的方式,我们就可以检测出崩溃的以及任何其他集群成员都无法访问的节点。这个决策是可靠的,因为集群的视图是来自多个节点的聚合。如果两台主机之间的链路出现故障,心跳仍然可以通过其他进程传播。使用Gossip来传播系统状态增加了系统中的消息数量,使得信息传播更可靠。
评论
有用 1避免依赖单点视图做出决策的方法之一是Gossip式的故障检测服务,它使用Gossip来收集和分发相邻进程的状态。
每个成员维护一个其他成员的列表:它们的心跳计数器和时间戳。时间戳列出了心跳计数器上次递增的时间。每个成员定期递增其心跳计数器,并将其列表分发给随机相邻节点。在接收到消息时,相邻节点将列表与它自己的列表进行合并,更新其他相邻节点的心跳计数器。
节点还定期检查状态列表和心跳计数器。如果任何节点在足够长的时间里没有更新其计数器,就认为它发生了故障。超时时间应当谨慎选择,以将误报的概率降至最低。成员之间通信的频率是有上限的,并且最多可以随着系统中的进程数线性增长。
通过这样的方式,我们就可以检测出崩溃的以及任何其他集群成员都无法访问的节点。这个决策是可靠的,因为集群的视图是来自多个节点的聚合。如果两台主机之间的链路出现故障,心跳仍然可以通过其他进程传播。使用Gossip来传播系统状态增加了系统中的消息数量,使得信息传播更可靠。
评论
有用 0
墨值悬赏

