【问题标题】:Why does a heartbeat take O(log N) time to propagate为什么心跳需要 O(log N) 时间来传播
【发布时间】:2017-09-18 05:46:13
【问题描述】:

我正在阅读有关 gossip 式故障检测的内容。

在我正在阅读的注释中指出:a single heartbeat takes O(log(N)) time to propagate 但未解释此声明

知道这是为什么吗?

【问题讨论】:

    标签: distributed-computing distributed distributed-system gossip


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

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

      我们知道时钟时间与t成正比,所以它一定与log_k(N)成正比。

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

      【讨论】:

        猜你喜欢
        • 2013-07-17
        • 2023-02-23
        • 1970-01-01
        • 2022-10-24
        • 2019-11-19
        • 1970-01-01
        • 2011-07-09
        • 2011-01-24
        • 2018-03-19
        相关资源
        最近更新 更多