gRPC服务健康检查(二):gRPC健康检查协议详解
创始人
2024-05-27 10:04:19
0

gRPC健康检查协议

健康检查用于检测服务端能否正常处理rpc请求,客户端对服务端的健康检查可以点对点进行,也可以通过某些控制系统(如负载平衡)进行。客户端可以根据服务端返回的状态执行对应的策略。

因为GRPC服务可以用于简单的客户端到服务端场景和其他控制系统(如负载平衡)的健康检查,所以gRPC健康检查协议借助了gRPC服务来实现。使用GRPC服务来实现健康检查有以下好处:

  1. 执行健康检查的格式与普通rpc相同,

  1. 具有丰富的语义,例如每个服务的健康状态,

  1. 能够重用所有现有的计费、配额基础设施等,因此服务器可以完全控制健康检查服务的访问。

gRPC健康检查服务定义

因为gRPC健康检查协议是通过gRPC服务实现的,我们首先看下这个服务的定义:

syntax = "proto3";package grpc.health.v1;message HealthCheckRequest {string service = 1;
}message HealthCheckResponse {enum ServingStatus {UNKNOWN = 0;SERVING = 1;NOT_SERVING = 2;}ServingStatus status = 1;
}service Health {rpc Check(HealthCheckRequest) returns (HealthCheckResponse);
}

客户端可以通过调用Check方法(需要设置截止时)查询服务器的运行状况,客户端可以通过设置服务名称来检查对应服务的健康状况。服务名称的格式建议为package_names.ServiceName,例如grpc.health.v1.Health。

服务端要注册所有服务并设置各个服务的状态,包括空服务名称及其状态。对于接收到的每个请求,如果在配置列表中找到了对应服务,需要根据当前服务情况返回SERVING或NOT_SERVING的状态。如果在配置列表没找到对应服务,则返回NOT_FOUND状态。

服务端应使用空字符串作为整体健康状态的键,以便对特定服务不感兴趣的客户端可以通过空请求查询服务的状态。服务端可以只对服务名称进行精确匹配也可以实现更复杂的匹配方式。

如果一次rpc调用在一段时间后都没有收到响应,可以认为服务端挂了,需要执行应对服务端挂掉情况的策略。

客户端可以调用Watch方法来使用基于stream方式的健康检查。服务器会立即发回一条代表当前服务状态的消息。只要服务的状态发生变化,就会发送一条新消息。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
一帆风顺二龙腾飞三阳开泰祝福语... 本篇文章极速百科给大家谈谈一帆风顺二龙腾飞三阳开泰祝福语,以及一帆风顺二龙腾飞三阳开泰祝福语结婚对应...
美团联名卡审核成功待激活(美团... 今天百科达人给各位分享美团联名卡审核成功待激活的知识,其中也会对美团联名卡审核未通过进行解释,如果能...