【问题标题】:Can we Scale gRPC like worker processes in the same server我们可以在同一台服务器上像工作进程一样扩展 gRPC
【发布时间】:2021-02-11 07:30:17
【问题描述】:

我们的应用程序预计每秒会收到数千个请求,我们正在考虑 gRPC,因为我们的主要服务之一是使用不同的语言。 我的查询是

  1. 我们是否可以使用像 supervisor 这样的东西来生成多个 worker(每个服务一个 gRPC 服务器)作为 gRPC 服务器侦听同一端口,或者 gRPC 服务器仅限于每个服务器/端口一个
  2. 我将如何进行性能测试以确定每个 gRPC 服务器的最大请求数。

提前致谢

【问题讨论】:

    标签: grpc supervisord


    【解决方案1】:
    1. 虽然您当然可以使用 supervisord 来生成多个 gRPC 服务器进程,但端口共享将是一个问题。但是,这是 Posix 的限制,而不是 gRPC 的限制。默认情况下,多个进程不能监听同一个端口。 (需要明确的是,多个进程可以使用 SO_REUSEPORT 绑定到同一个端口,但这不会导致您可能想要的行为)。

    因此,您有两种选择可以将流量路由到单个端口上的正确服务。第一种选择是在同一个进程中运行所有 gRPC 服务并附加到同一个服务器。

    如果只有一个服务器进程不适合您,那么您将不得不开始考虑负载平衡。您可以使用任何支持 HTTP/2 的负载均衡器(例如 Envoy、Nginx)来前置所有服务,并让它在您想要的单个端口上侦听并根据需要路由到每个 gRPC 服务器进程。

    1. 这是一个非常广泛的问题。答案是“你对任何非 gRPC 服务器进行基准测试的方式”。 This site 是基准测试背后一些原则的绝佳资源。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-21
      • 2016-10-09
      • 2015-12-23
      • 1970-01-01
      • 2019-11-03
      • 1970-01-01
      • 2012-03-02
      相关资源
      最近更新 更多