grpc网关是一种充当客户端和grpc服务之间中介的服务,它作为客户端和grpc服务通信的桥梁,负责将客户端发起的请求转发给grpc服务端,并将grpc服务端响应返回给客户端。grpc网关可以实现协议转换、路由转发、负载均衡、缓存、限流等功能,从而提高服务的可用性和性能。
依赖工具
- 准备一个微服务 user。
- 准备proto文件 edusys_gw.proto。
- 安装工具 sponge。
安装完工具sponge后,执行命令打开UI界面:
sponge run
快速创建grpc网关项目
进入sponge的UI界面,点击左边菜单栏【Protobuf】-->【创建grpc网关项目】,填写一些参数生成grpc网关项目代码。
web框架使用 gin,还包含了swagger文档、常用的服务治理功能代码,构建部署脚本等。
使grpc网关服务可以调用微服务api接口
生成连接代码
在rpc网关服务为了连接rpc服务,需要另外生成连接rpc服务代码,点击左边菜单栏【Public】--> 【生成grpc服务连接代码】,填写参数生成代码,然后把生成的连接rpc服务代码移动到grpc网关项目。
配置微服务地址
打开配置文件configs/edusys_gw.yml,设置grpc服务地址。
grpcClient:
- name: "user"
host: "127.0.0.1"
port: 8282
registryDiscoveryType: ""
enableLoadBalance: false
复制grpc服务的proto文件
为了在rpc网关服务中能够调用rpc服务的方法,需要把rpc服务的proto文件复制到rpc网关服务的目录api/edusys_gw/v1。在grpc网关目录下,执行命令:
# 注:此命令用来复制使用sponge创建的微服务proto文件
make copy-proto SERVER=../../4_micro-grpc-protobuf
启动微服务和grpc网关服务
运行微服务
切换到微服务 user ,运行微服务:
make run
运行grpc网关服务
切换到 edusys-grpc-gateway 目录,执行命令:
# 生成代码
make proto
# 打开 internal/service/user_gw.go,根据示例代码填写具体逻辑代码
# 这是填写的具体逻辑代码: https://github.com/zhufuyi/sponge_examples/blob/main/5_micro-gin-rpc-gateway/edusys-grpc-gateway/internal/service/edusys_gw.go
# 编译和启动服务
make run
在浏览器打开 http://localhost:8080/apis/swagger/index.html 就可以测试api接口了。
这是根据上面步骤生成的grpc网关服务代码 github.com/zhufuyi/spo…
点击查看详细的grpc网关服务开发文档 go-sponge.com/zh-cn/rpc-g…