【问题标题】:Check grpc server availability?检查 grpc 服务器的可用性?
【发布时间】:2018-07-08 11:04:03
【问题描述】:

有什么方法可以检查grpc-server 是否已启动,而无需进行实际的过程调用和实施额外的查询(即rpc HealthCheck (Input) returns (Status))?

【问题讨论】:

  • 您可能可以使用 HEAD 请求 (ochronus.com/http-head-request-good-uses),但我不知道支持的 grpc 调用
  • 难道不是同一个failure,作为正常调用的一部分,也能达到这个目的吗?我看不出有什么区别……只是您这边有更多代码:容错以及检查故障的常规程序;如果成功,容错和什么不是,再次,“正常”调用的例程。在成功的调用和下一个调用之间可能发生任何事情......即使它们相隔几毫秒。你需要考虑到这一点。一直以来。
  • 这里是python解决方案stackoverflow.com/a/61384353/7127824

标签: grpc


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-07-25
    • 1970-01-01
    相关资源
    最近更新 更多