小工具      在线工具  汉语词典  css  js  c++  java

go-zero的rpc服务案例解析

# go-zero,golang,rpc,开发语言 额外说明

收录于:152天前

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.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有自己的权限认证套件,以后会更新。

. . .

相关推荐

额外说明

Caused by: com.netflix.hystrix.exception.HystrixRuntimeException: order timed-out and no fallback av

  api-gateway中: 原因: Hystrix缺省超时判断为1秒钟,由于网络问题,有些请求超过1秒钟之后才接收到。 解决: 配置修改请求超时时长(application.yml):             hystrix: command:

额外说明

服务器重启后启动Docker命令

启动步骤: 1、启动Docker 守护进程       systemctl daemon-reload   2、Docker启动命令:   systemctl start docker   3、查看docker服务是否启动   ps -ef |grep

额外说明

C语言libpq连接数据库,查询数据库信息;关闭数据库连接; PostgreSQL;嵌入式SQL

C语言 libpq 连接数据库,查询数据库信息;关闭数据库连接; PostgreSQL;嵌入式 SQL CONNECT — 建立一个数据库连接 参数 connection_target connection_object connection_user

额外说明

overleaf(Latex)的本地安装

本文介绍本地, 使用(LaTex, Sublime( 作为编辑器), SumatraPDF-(作为预览PDF)) 这三软件的组合,配置出overleaf的环境。 1. LaTex 的安装 1.1 LaTex 下载 网址, https://tug.org/

额外说明

计算机网络(一)—— 概述

本文幕布: 文档链接: https://www.mubucm.com/doc/zxuWnemoAm 密码: 8n6d 文章目录 第一章 概述 1.1 计算机网络在信息时代中的作用 1.2 因特网概述 1.2.1 网络的网络(计算机网络的概念) 1.2.2

额外说明

微信小程序开发前准备

文章目录 零、学习目标 一、注册微信小程序开发账号 (一)访问微信公众号平台官网 (二)进入注册页面完成账号的注册 (三)进入微信小程序管理后台 二、获取微信小程序AppID (一)什么是小程序AppID (二)获取小程序AppID (三)设置小程序信息

额外说明

Web应用部署在WebLogic中Basic认证无法运行问题及解决

问题: 在基于Spring Boot的Web应用中使用了Basic认证,在开发环境集成Tomcat服务器运行正常, 但是部署到WebLogic服务器之后就无法使用了。 发生场景: 一般Web应用的登录使用的是用户名/密码登录或者域账号登录较多, Basi

额外说明

全网最新超详细的【Axure】Axure RP 10的下载、安装、中文字体、授权【2023年】

文章目录 1. 文章引言 2. 下载Axure10 3. 安装Axure10 4. Axure10中文 5. 解决axure弹框更新的问题 6. 重要备注 7. Axure10授权 1. 文章引言 最近在学习原型图,针对画原型图的工具,反复对比墨刀、Ax

额外说明

【Jmeter】自动化集成实战:Jmeter 报告可视化(win 10) —— 配置生成测试报告仪表板,Jmeter + Jenkins 自动化构建生成 HTML 报告

目录 一、jmeter报告仪表板相关信息 二、文件修改说明 三、jmeter.properties文件配置 四、user.properties文件配置

额外说明

Next.js 与 React:选择正确框架的终极指南

详细比较最流行的前端开发技术 Next.js 和 React,以选择合适的框架来构建一流的 Web 应用程序。 React 和 Next.js 是前端开发中最流行的技术,可在全球范围内创建高质量的网站和现代动态 Web 应用程序。 Hulu 和 Netf

ads via 小工具