为什么心跳需要O(log N)时间来传播

时间:2017-04-21 09:32:00

标签: distributed-computing distributed distributed-system gossip

我正在阅读有关八卦风格故障检测的内容。

在我正在阅读的笔记中,它说:a single heartbeat takes O(log(N)) time to propagate但这句话没有解释

知道为什么会这样吗?

2 个答案:

答案 0 :(得分:2)

因为在这种情况下最有效的传播方式是使用二叉树结构(或任何k-ary树)。第一个节点向其子节点发送消息,它们向子节点发送消息等。二叉树的高度为log n,树中的每个级别代表传播消息的一个阶段,因此总时间等于O(log n)

答案 1 :(得分:1)

首先向k个节点发送消息。他们每个人都向k个节点发送消息并收集他们的回复。每一跳将接收到该消息的节点数乘以k。当k ^ t> = N时,所有节点都收到了消息。发生这种情况所需的时钟时间与跳跃次数t成正比。

k ^ t = N => log_k(N)= T

我们知道时钟时间与t成正比,因此必须与log_k(N)成正比。

我特别不熟悉八卦,但这个答案适用于大多数群集结构上的大多数广播消息。