gRPC 端口号有规则吗?

Are there rules for gRPC port number?

我目前正在开发一个将公开 REST 和 gRPC 端点的应用程序。

我需要为 gRPC 服务器设置一个端口。

端口号有什么规定吗?除了 REST 服务的标准之外,还有其他特殊范围吗?

据我所知,没有规则。

您会看到 50051 用作 gRPC 默认值。

如果您在与 gRPC 相同的端口上多路复用 HTTP 1.x 流量,您可能希望默认使用 80(不安全)和 443(安全)端口对于 front-end 服务(通常是代理),80808443 分别用于后端(代理)服务。

NOTE Google defaults to 8080 (for proxied containers) on Google Cloud Platform (e.g. App Engine, Cloud Run) with an often-ignored (but important) requirement that the deployed service bind to the value of PORT environment variable exported to the container environment (which defaults but may not always be 8080). Suffice to say, check your deployment platforms' requirements and adhere to their requirements.

不,端口号没有任何规则。请注意为 gRPC 分配 Http2 协议和 SSL(不是强制性的,但强烈推荐)。您只需在 appsettings.json 中配置 Kestrel 端点参数即可。使用您的自定义名称使用 WebApi 和 gRPC 设置端点,如下所示:

  "Kestrel": {
    "Endpoints": {
      "Grpc": {
        "Protocols": "Http2",
        "Url": "https://localhost:5104"
      },
      "webApi": {
        "Protocols": "Http1",
        "Url": "https://localhost:5105"
      }
    }
  }