使用 API7 企业版代理 gRPC 服务
Google Remote Procedure Call(gRPC)是基于 HTTP/2 协议的开源高性能远程过程调用(Remote Procedure Call,RPC)框架。gRPC 使用 Protocol Buffers(protobuf)作为接口描述语言(Interface Description Language,IDL)。API7 企业版提供协议转换、负载均衡、身份验证和授权等关键功能,增强了 gRPC 的潜力。
本指南介绍如何使用 API7 企业版代理 gRPC 服务。
前提条件
- 安装 API7 企业版。
- 安装 gRPCurl,将请求发送到 gRPC 服务器进行验证。
部署示例 gRPC 服务器
-
启动示例 gRPC 服务器。
API7 提供了一个 gRPC 服务示例,用于测试。你可以使用以下命令在端口
50051
上启动示例 gRPC 服务器的 Docker 实例grpc-service
:docker run -d --name grpc-service -p 50051:50051 --restart always api7/grpc-server-example:1.0.0
-
列出可用的 gRPC 服务和方法,验证 gRPC 服务器是否启动成功:
-
gRPC 服务
grpcurl -plaintext 127.0.0.1:50051 list
你应该看到以下输出:
grpc.reflection.v1alpha.ServerReflection
helloworld.Greeter
helloworld.TestImport -
gRPC 方法
grpcurl -plaintext 127.0.0.1:50051 list helloworld.Greeter
你应该看到以下输出:
helloworld.Greeter.GetErrResp
helloworld.Greeter.Plus
helloworld.Greeter.SayHello
helloworld.Greeter.SayHelloAfterDelay
helloworld.Greeter.SayHelloBidirectionalStream
helloworld.Greeter.SayHelloClientStream
helloworld.Greeter.SayHelloServerStream
-
更新 API7 网关实例
默认情况下,API7 网关实例在端口 9443
上支持 TLS 加密的 HTTP/2。在本教程中,你可以添加端口 9081
,支持不加密的 HTTP/2,然后将端口 9081
映射到主机上的同一端口。
config.yaml
apisix:
node_listen:
- port: 9080
enable_http2: false
- port: 9081
enable_http2: true
在 api7-ee
目录下重新运行 docker-compose up -d
命令,更新 API7 网关配置。
创建服务和路由
本示例创建一个名为 grpc-example
的服务和一个名为 helloworld.Greeter
的路由。
创建服务
- 在左侧菜单选择目标网关组下的 已发布服务 菜单,然后点击 新增服务。
- 选择 手动新增。
- 名称 填写
grpc-example