【问题标题】:How to manage gRPC server channel within a spring-boot如何在 spring-boot 中管理 gRPC 服务器通道
【发布时间】:2020-06-21 04:27:32
【问题描述】:

我有一个包含 spring-boot 应用程序和 gRPC 服务器的设置。 gRPC 服务器使用 NodeJS 编写并部署在单独的服务器中。在我的 spring-boot 应用程序中,有一个端点接受请求对象并将其委托给 gRPC 服务器。

问题:

1) 在这种情况下,我是否需要为每个传入的 http 请求创建 rGPC 通道? (听起来效率不高)

2) 还是我在 spring-boot 应用程序初始化时创建了一个通道?

在2)方案中,当gRPC服务器宕机需要从eureka服务器获取新的URI时如何管理?

这里是gRPC channel creation in spring-boot

【问题讨论】:

    标签: java spring-boot microservices grpc-java


    【解决方案1】:

    2) 是要走的路。要解决服务器故障的情况,您可以在将传入的 http 请求转发到 gRPC 服务器之前检查通道状态 (io.grpc.ManagedChannel.getState(boolean)),如果不是 READY,则在适当重构之后调用您的 initCommunicationChannel(),以便可以调用它多次。

    或者,您可以实现名称解析器插件 (https://github.com/grpc/grpc/blob/master/doc/naming.md),它只需调用 eurekaClient.getApplication("logger-app").getInstances() 以返回解析的地址,然后客户端负载平衡策略 (https://github.com/grpc/grpc/blob/master/doc/load-balancing.md) 会使用这些地址。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-14
      • 2019-01-03
      • 1970-01-01
      • 2018-12-21
      • 2021-05-27
      相关资源
      最近更新 更多