在 Azure 应用服务上配置 gRPC

本文介绍如何为 gRPC 配置 Web 应用。

gRPC 是一个远程过程调用框架,可通过 HTTP/2 简化客户端和服务器之间的消息。 通过 HTTP/2 使用 gRPC 协议可使用如下功能:

  • 多路复用,用于通过同一连接发送多个并行请求。
  • 双向流式处理,用于同时发送请求和响应。

对 gRPC 的支持目前在适用于 Linux 的 Azure 应用服务上提供。 若要在 Web 应用上使用 gRPC,需要通过选择 HTTP 版本、代理和端口来配置应用。

有关每个受支持的语言的 gRPC 客户端和服务器示例,请参阅 GitHub 上的文档

先决条件

像往常一样创建 Web 应用。 选择首选运行时堆栈,并选择 Linux 作为操作系统。

创建 Web 应用后,在部署应用程序之前,配置以下详细信息以启用 gRPC。

备注

如果要使用 Visual Studio 将 .NET gRPC 应用部署到 Azure 应用服务,请跳到步骤 3。 Visual Studio 为你设置 HTTP 版本和 HTTP 2.0 代理配置。

1.配置 HTTP 版本

需要配置的第一个设置是 HTTP 版本:

  1. 在 Web 应用的左窗格中,在“设置”下,转到“配置”
  2. 在“常规设置”选项卡上,向下滚动到“平台设置”
  3. 在“HTTP 版本”下拉列表中,选择“2.0”
  4. 选择“保存”。

此设置重启应用程序,并将前端配置为允许客户端进行 HTTP/2 调用。

2.配置 HTTP 2.0 代理

接下来,需要配置 HTTP 2.0 代理:

  1. 在同一“平台设置”部分中,找到“HTTP 2.0 代理”设置,然后选择“仅 gRPC”
  2. 选择“保存”。

此设置将站点配置为接收 HTTP/2 请求。

3.配置 HTTP/2 端口

除了 HTTP/1.1 流量外,Azure 应用服务还需要专门侦听 HTTP/2 流量的应用程序设置。 在“应用设置”中定义 HTTP/2 端口:

  1. 在 Web 应用的左窗格中,在“设置”下,转到“环境变量”
  2. 在“应用设置”选项卡上,将以下应用设置添加到应用程序:
    • Name = HTTP20_ONLY_PORT
    • Value = 8585

这些设置配置应用程序上指定用于侦听 HTTP/2 请求的端口。

配置 HTTP 版本、端口和代理后,可使用 gRPC 成功对 Web 应用进行 HTTP/2 调用。

(可选)Python 启动命令

仅对于 Python 应用程序,还需要设置自定义启动命令:

  1. 在 Web 应用的左窗格中,在“设置”下,转到“配置”
  2. 在“常规设置”下,为“启动命令”添加以下值:python app.py

常见主题

下表可回答有关将 gRPC 与应用服务配合使用的问题。

备注

应用服务环境 v2 不支持 gRPC 功能。 使用应用服务环境 v3。

主题 Answer
OS 支持 可以在 Linux 上使用 gRPC。 Windows 支持目前为预览版。
语言支持 支持 gRPC 的每种语言都支持 gRPC。
客户端证书 Azure 应用服务上启用的 HTTP/2 目前不支持客户端证书。 使用 gRPC 时需要忽略客户端证书。
安全调用 gRPC 必须对 Azure 应用服务进行安全的 HTTP 调用。 不能进行不安全的调用。
活动超时 Azure 应用服务上的 gRPC 请求有超时请求限制。 在处于非活动状态 20 分钟后,gRPC 请求超时。
自定义容器 HTTP/2 和 gRPC 支持是对 Azure 应用服务 HTTP/1.1 支持的补充。 支持 HTTP/2 的自定义容器也必须支持 HTTP/1.1。