go-zero的远程调用服务是基于gRpc的gRPC 教程和应用。
zero使用使用gRpc需要安装protoc
插件,因为gRpc基于protoc插件使用protocol buffers文件生成rpc服务器和api的代码的。
gRPC的代码生成同样依赖protoc-gen-go和protoc-gen-go-grpc插件来生成Go语言的gRPC代码。
goctl env check --install --verbose --force
也可以使用go get命令来安装
go install google.golang.org/protobuf/cmd/protoc-gen-go@v1.28 go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@v1.2
构建rpc服务:goctl rpc new rpcservice
go-zero.dev官网修改逻辑层代码,如下图所示:
详情请移步官网gRPC 演示代码生成。
启动rpc服务器:
编写客户端调用方法,其中必要条件为_grpc.pb
和pb
文件:
将这两个文件复制到新项目中用于构建客户端。
创建客户端实例的代码如下:
//配置连连接参数(无加密)
dial, _ := grpc.Dial("localhost:8080", grpc.WithTransportCredentials(insecure.NewCredentials()))
defer dial.Close()
//创建客户端连接
client := rpcservice.NewRpcserviceClient(dial)
所需的库如下:
import (
"context"
"fmt"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
)
客户端实例调用方法:
res, _ := client.Ping(context.Background(), &rpcservice.Request{
Ping: "xiaoxu"})
完整代码如下:
package main
import (
"context"
"fmt"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"rpcclient/rpcservice"
)
func main() {
//配置连连接参数(无加密)
dial, _ := grpc.Dial("localhost:8080", grpc.WithTransportCredentials(insecure.NewCredentials()))
defer dial.Close()
//创建客户端连接
client := rpcservice.NewRpcserviceClient(dial)
//通过客户端调用方法
res, _ := client.Ping(context.Background(), &rpcservice.Request{
Ping: "xiaoxu"})
fmt.Println(res.Pong)
}
启动客户端如下图所示,成功获取服务端方法返回值。
更多信息请移步gRPC远程调用服务器与客户端连接详解。
所以在go-zero搭建的服务中,任何具有_grpc.pb
和pb
文件的项目都可以通过内部方法构建客户端实例从而远程调用服务器的方法。
这只实现了远程调用,没有任何权限认证。 grpc有自己的权限认证套件,以后会更新。
. . .
相关推荐
最新推荐
Java8中的集合排序
28天前
JS点击空白区域时关闭弹出层
28天前
虚拟机如何接入LAN局域网
27天前
微信小程序——商城首页页面
25天前
Java成神路 —— 文件操作
25天前
Docker镜像篇(9) - 镜像原理
23天前
ads via 小工具