【Java高级工程师蜕变之路】061 分布式系统设计策略之心跳检测

本文阐述了分布式系统中常见的设计策略。

分布式系统设计策略

2022/03/01 校对完成

文章更新历史

2022/03/01 初稿。

分布式系统中需要解决的问题

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

心跳检测

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

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

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

image-20220410224103189

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

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

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

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

  • 周期性心跳检测机制

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

    image-20220410230057024

  • 累计失效检测机制

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

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

    image-20220410230513249

posted @ 2022-05-04 22:41  灯塔下的守望者  阅读(89)  评论(0编辑  收藏  举报