检查 grpc 服务器可用性?

ske*_*eph 5 grpc

有没有什么方法可以grpc-server在不进行实际的过程调用和实现额外的查询(即rpc HealthCheck (Input) returns (Status))的情况下检查它是否正常?

Eri*_*son 5

大多数客户端应该使用通道状态 API。例如,在 Java 中,可以通过state = managedChannel.getState(false);. 在许多情况下,将 {IDLE, CONNECTING, READY} 视为“好”是合适的,但如果您对延迟非常敏感,则只能将 READY 视为“好”,并应传递truegetState().

请注意,API 不会主动监控服务的运行状况;它只是通知服务器当前是否正在运行且可访问。如果您需要了解服务的精确运行状况,那么您需要通过 RPC 使用运行状况服务。但通常预计这种情况很少见,除了负载均衡器(而不是使用负载均衡器的客户端)。