分布式系统设计策略之心跳检测

分布式系统设计策略

  • 分布式系统中需要解决的问题有哪些?

    1. 如何检测当前节点是否存活?
    2. 如何保障高可用
    3. 容错处理
    4. 负载均衡

心跳检测

检测节点故障的通用手段:心跳检测

心跳,就是以固定的频率向其他节点汇报当前节点状态的方式。收到心跳,一般可以认为一个节点和现在的网络是良好的。

心跳汇报时,一般会携带附加状态、元数据信息等,便于管理。

image-20220410224103189

若 Sever 没有收到 Node3 的心跳时,Server 认为 Node3 失联。

但是失联只是 Node3 失去联系,不代表 Node3 存在故障,有可能是 Node3 处于繁忙状态,导致调用检测超时,也有可能 Server 与 Node3 直接出现网络闪断或者链路故障。

因此,心跳不是万能的。收到心跳可以确认正常,但是收不到心跳,不能认定该节点已经死亡。这时候,可以通过一些方法帮助 Server 做决定:

周期性心跳检测机制、累计失效检测机制。

  • 周期性心跳检测机制

    Server 每隔 t 秒向 Node 集群发送检测请求,设定超时时间,如果超过超时时间,则判断死亡,可以把该节点踢出集群。

    image-20220410230057024

  • 累计失效检测机制

    在周期心跳检测机制的基础上,统计一定周期内节点的返回情况(包括超时和正确返回),用来计算此节点的死亡概率。

    对于宣告濒临死亡的节点,可以发起有限次的重试,以做进一步判断,如果超过次数,可以把该节点踢出集群。

    image-20220410230513249

文章更新历史

2022/03/01 校对完成

2022/03/01 初稿

作者

Terwer

发布于

2022-04-17

更新于

2023-08-27

许可协议

评论