本文介绍如何为 gRPC 配置 Web 应用,这是一种远程过程调用框架,可以简化客户端和服务器之间的消息(通过 HTTP/2)。 通过 HTTP/2 使用 gRPC 协议,可以使用以下功能:
- 多路复用,用于通过同一连接发送多个并行请求。
- 双向流式处理,用于同时发送请求和响应。
Azure 应用服务 for Linux 上提供了对 gRPC 的支持。 若要在 Web 应用中使用 gRPC,可以通过选择 HTTP 版本、代理和端口来配置应用。
有关每个受支持的语言的 gRPC 客户端和服务器示例,请参阅 GitHub 上的应用服务上的 gRPC 。
先决条件
- 在 Azure 应用服务中使用您首选的运行时环境的 Linux Web 应用。
配置 gRPC
创建 Web 应用后,在部署应用程序之前,配置以下详细信息以启用 gRPC。
注意
如果要使用 Visual Studio 将 .NET gRPC 应用部署到应用服务,请跳到 配置 HTTP/2 端口,因为 Visual Studio 会为你设置 HTTP 版本和 HTTP 2.0 代理配置。
配置 HTTP 版本和 HTTP 2.0 代理
使用 Web 应用的 Azure 门户页配置应用的 HTTP 版本和代理。
- 在 Web 应用页面的左侧导航菜单中,选择 “设置>配置”。
- 在“堆栈设置”页的“常规设置”选项卡上,配置以下设置:
- 对于 HTTP 版本,请选择 2.0。
- 对于 HTTP 2.0 代理, 仅选择 gRPC。
- 选择应用。
HTTP 版本设置会重启应用程序,并将前端配置为允许客户端进行 HTTP/2 调用。 HTTP 2.0 代理设置将站点配置为接收 HTTP/2 请求。
配置 HTTP/2 端口
除了 HTTP/1.1 流量外,App Service 还需要一个专门用于侦听 HTTP/2 流量的应用程序设置。 使用 应用设置 定义 HTTP/2 端口。
- 在 Web 应用页面的左侧导航菜单中,选择 “设置>环境变量”。
- 在“环境变量”页的“应用设置”选项卡上,选择“添加”。
- 在 “添加/编辑应用程序设置” 屏幕上,添加以下应用设置:
- 对于 名称,请输入 HTTP20_ONLY_PORT。
- 对于 值,请输入 8585。
- 选择 “应用”,并确认应用程序可能在必要时重启。
此设置用于配置您的应用程序中侦听 HTTP/2 请求的端口。
配置 HTTP 版本、端口和代理后,可以使用 gRPC 成功对 Web 应用进行 HTTP/2 调用。
提供启动命令
对于 Python 应用程序,必须提供自定义启动命令。 对于其他语言,启动命令是可选的。
- 在 Web 应用页面的左侧导航菜单中,选择 “设置>配置”。
- 在 “堆栈设置 ”页上,选择 “堆栈设置 ”选项卡。
- 在 “启动”命令下,输入
python app.py。 - 选择应用。
要求和限制
以下要求和限制适用于应用服务的 gRPC 使用情况。
- 应用服务环境版本。 应用服务环境 v2 不支持 gRPC。 使用应用服务环境 v3。
- OS 支持。 可以在 Linux 上使用 gRPC。 Windows 支持目前为预览版。
- 客户端证书。 应用服务上的 HTTP/2 不支持客户端证书。 使用 gRPC 时,必须忽略客户端证书。
- 安全调用。 gRPC 必须对应用服务进行安全的 HTTP 调用。 您无法进行不安全的调用。
- 活动超时。 应用程序服务中的 gRPC 请求具有超时限制。 在处于非活动状态 20 分钟后,gRPC 请求超时。
- 自定义容器。 HTTP/2 和 gRPC 支持是对 Azure 应用服务 HTTP/1.1 支持的补充。 支持 HTTP/2 的自定义容器也必须支持 HTTP/1.1。