示例五:一键自动生成grpc网关服务代码,轻松实现跨语言、跨平台的服务调用

848 阅读2分钟

grpc网关是一种充当客户端和grpc服务之间中介的服务,它作为客户端和grpc服务通信的桥梁,负责将客户端发起的请求转发给grpc服务端,并将grpc服务端响应返回给客户端。grpc网关可以实现协议转换、路由转发、负载均衡、缓存、限流等功能,从而提高服务的可用性和性能。

依赖工具

安装完工具sponge后,执行命令打开UI界面:

sponge run

快速创建grpc网关项目

进入sponge的UI界面,点击左边菜单栏【Protobuf】-->【创建grpc网关项目】,填写一些参数生成grpc网关项目代码。

micro-rpc-gw-pb.png

web框架使用 gin,还包含了swagger文档、常用的服务治理功能代码,构建部署脚本等。


使grpc网关服务可以调用微服务api接口

生成连接代码

在rpc网关服务为了连接rpc服务,需要另外生成连接rpc服务代码,点击左边菜单栏【Public】--> 【生成grpc服务连接代码】,填写参数生成代码,然后把生成的连接rpc服务代码移动到grpc网关项目。

micro-rpc-cli.png


配置微服务地址

打开配置文件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接口了。

micro-rpc-gw-pb-swagger.png


这是根据上面步骤生成的grpc网关服务代码 github.com/zhufuyi/spo…

点击查看详细的grpc网关服务开发文档 go-sponge.com/zh-cn/rpc-g…