RPC实战与核心原理之健康检测

健康检测:这个节点都挂了,为啥还要疯狂发请求

回顾

超大规模集群“服务发现”的挑战,服务发现的作用就是实时感知集群 IP 的变化,实现接口跟服务集群节点 IP 的映射。在超大规模集群实战中,我们更多需要考虑的是保证最终一致性。其实总结来说,就一关键词,你要记住“推拉结合,以拉为准”

背景

因为有了集群,所以每次发请求前,RPC 框架会根据路由和负载均衡算法选择一个具体的 IP 地址。为了保证请求成功,我们就需要确保每次选择出来的 IP 对应的连接是健康的

健康检测的逻辑

业内常用的检测方法就是用心跳机制,就是服务调用方每隔一段时间就问一下服务提供方目前的状态

分为三个状态

  • 健康状态:建立连接成功,并且心跳探活也一直成功;
  • 亚健康状态:建立连接成功,但是心跳请求连续失败;
  • 死亡状态:建立连接失败。

根据心跳或重连的结果来动态变化节点状态

具体的解决方案

可用率的计算方式是某一个时间窗口内接口调用成功次数的百分比(成功次数 / 总调用次数)。当可用率低于某个比例就认为这个节点存在问题,把它挪到亚健康列表,这样既考虑了高低频的调用接口,也兼顾了接口响应时间不同的问题。

posted @ 2022-02-13 17:21  牛犁heart  阅读(212)  评论(0编辑  收藏  举报