有时,我们的grpc服务器宕机/不正常,以致我们的客户端无法向grpc服务器发出请求,在这种情况下,我们计划以通用方式编写运行状况检查。我们有大量的原始缓冲区文件,假设
a.proto
syntax = "proto3"
package com.a
message request{
string name = 1;
}
message response{
string name = 1;
}
service testService{
rpc check(request) returns (response)
}
b.proto
syntax = "proto3"
package com.a
message request1{
string name = 1;
}
message response1{
string name = 1;
}
service testService{
rpc check(request1) returns (response1)
}
c.proto
syntax = "proto3"
package com.a
message request2{
string name = 1;
}
message response2{
string name = 1;
}
service testService{
rpc check(request2) returns (response2)
}
有什么方法可以为上述三个服务编写通用的运行状况检查器。下面的链接对于编写一个原型文件的运行状况检查很有用。 https://github.com/grpc/grpc/blob/master/doc/health-checking.md
但是我们需要以通用方式编写它,例如创建一个运行状况原型并将其实现到所有grpc服务器原型文件中。这里的问题是我们可以导入消息,但不能导入服务方法。。如果您遇到撰写健康检查的问题,请分享您的评论。
答案 0 :(得分:0)
我不太明白为什么需要在某处导入运行状况服务,您必须实现此服务并将其添加到每个服务器中。
另一种选择是使用GRPC Services依赖关系,它提供了HealthServiceImpl中描述的健康服务(your link)的实现。
您将创建一个HealthStatusManager实例来管理运行状况检查服务。然后将通过#getHealthService()
方法检索到的服务添加到您的服务器中。