在当今快速发展的技术领域中,gRPC(Google Remote Procedure Call)已经成为许多应用程序中不可或缺的一部分。然而,要充分发挥 gRPC 的潜力,你需要一个强大的 API 网关来有效管理你的 gRPC 服务,为其提供协议转换、负载均衡、身份认证和授权等关键功能。无论你是否熟悉 gRPC,只需花 5 分钟阅读本文,你将掌握使用 API7 企业版网关代理 gRPC 连接的方法。
前置条件
安装 API7 企业版网关;
安装 grpcurl 模拟 gRPC 客户端与您的 gRPC 服务器交互;
启动一个测试使用的 gRPC 服务;
1docker run -d --name grpc-service -p 50051:50051 --restart always api7/grpc-server-example:1.0.0
- 启动成功后,可以用
grpcurl
来查看可用的 gRPC 服务列表和方法:
1$ grpcurl -plaintext 127.0.0.1:50051 list 2 3grpc.reflection.v1alpha.ServerReflection 4helloworld.Greeter 5helloworld.TestImport 6 7$ grpcurl -plaintext 127.0.0.1:50051 list helloworld.Greeter 8 9helloworld.Greeter.GetErrResp 10helloworld.Greeter.Plus 11helloworld.Greeter.SayHello 12helloworld.Greeter.SayHelloAfterDelay 13helloworld.Greeter.SayHelloBidirectionalStream 14helloworld.Greeter.SayHelloClientStream 15helloworld.Greeter.SayHelloServerStream
- 启动成功后,可以用
使用 API7 企业版网关代理 gRPC 连接
更新网关实例配置文件
默认情况下,API7 企业版网关实例只在 9443 端口支持 TLS 加密的 HTTP/2。通常我们在测试环境中为了便于测试,可以修改网关实例的配置文件,在 node_listen
添加一个端口 9081 支持不加密的 HTTP/2。
1apisix:
2 node_listen:
3 - port: 9080
4 enable_http2: false
5 - port: 9081
6 enable_http2: true
更改完毕后,在安装 API7 企业版网关的 api7-ee
目录下重新运行 docker-compose up -d
即可。
配置服务和路由
接下来,我们将在 API7 企业版的控制台页面中配置对应的资源,以代理我们已经准备好的 gRPC 服务。
- 新增名为 grpc-example 的服务,并选择 gRPC 为上游 Scheme;
- 点击进入刚创建的 grpc-example 服务,添加路由。路由的路径匹配格式为 /{service}/{method},例如根据我们之前查询到的 gRPC 服务列表和方法,我们可以配置路径为:/helloworld.Greeter/SayHello。
发布服务进行测试
在创建好服务和路由之后,只需将服务发布到网关组中即可生效。
点击“发布服务”,选择指定的网关组及要发布的服务;
添加 gRPC 服务节点(IP +端口),然后点击“发布”;
发布成功后我们使用 grpcurl 来模拟 gRPC 客户端:
- 我们需要使用一份 helloworld.proto 的文件,确保 grpcurl 程序正确将请求和响应的格式与 gRPC 服务的定义相匹配。我们可以在这里找到本示例中用到的 .proto 文件。
- 接着我们只需要运行命令,即可看到我们使用 API7 企业版网关成功代理 gRPC 连接。
1$ grpcurl -plaintext -proto helloworld.proto -d '{"name":"apisix"}' 127.0.0.1:9081 2helloworld.Greeter.SayHello 3{ 4 "message": "Hello apisix" 5}
总结
API7 企业网关内置了 100+ 插件,涵盖了认证、授权、限速、日志、监控等广泛功能。通过使用 API7 企业版网关代理 gRPC 服务,将极大提高系统的灵活性、安全性、性能和可管理性,为开发人员和运维团队提供了更好的工具和控制手段。快来试用 API7 企业版https://www.apiseven.com/enterprise网关,为你的 gRPC 应用赋能吧!