在 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 代理配置。
需要配置的第一个设置是 HTTP 版本:
- 在 Web 应用的左窗格中,在“设置”下,转到“配置”。
- 在“常规设置”选项卡上,向下滚动到“平台设置”。
- 在“HTTP 版本”下拉列表中,选择“2.0”。
- 选择“保存”。
此设置重启应用程序,并将前端配置为允许客户端进行 HTTP/2 调用。
接下来,需要配置 HTTP 2.0 代理:
- 在同一“平台设置”部分中,找到“HTTP 2.0 代理”设置,然后选择“仅 gRPC”。
- 选择“保存”。
此设置将站点配置为接收 HTTP/2 请求。
除了 HTTP/1.1 流量外,Azure 应用服务还需要专门侦听 HTTP/2 流量的应用程序设置。 在“应用设置”中定义 HTTP/2 端口:
- 在 Web 应用的左窗格中,在“设置”下,转到“环境变量”。
- 在“应用设置”选项卡上,将以下应用设置添加到应用程序:
- Name = HTTP20_ONLY_PORT
- Value = 8585
这些设置配置应用程序上指定用于侦听 HTTP/2 请求的端口。
配置 HTTP 版本、端口和代理后,可使用 gRPC 成功对 Web 应用进行 HTTP/2 调用。
仅对于 Python 应用程序,还需要设置自定义启动命令:
- 在 Web 应用的左窗格中,在“设置”下,转到“配置”。
- 在“常规设置”下,为“启动命令”添加以下值:
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。 |