go-zero的rpc服务案例解析

得意时要看淡,失意时要看开。不论得意失意,切莫大意;不论成功失败,切莫止步。志得意满时,需要的是淡然,给自己留一条退路;失意落魄时,需要的是泰然,给自己觅一条出路go-zero的rpc服务案例解析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

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 demo 代码生成

启动rpc服务器:
在这里插入图片描述

编写客户端调用方法,其中必要条件为_grpc.pbpb文件:

在这里插入图片描述
将这两个文件复制到新项目中用于构建客户端。

在这里插入图片描述
创建客户端实例的代码如下:

//配置连连接参数(无加密)
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.pbpb文件的项目都可以通过内部方法构建客户端实例从而远程调用服务器的方法。

这里仅仅实现了远程调用没有任何权限认证,grpc有自己的权限认证套件,在后续会继续更新。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/156111.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!