Golang搭建grpc环境

简介

OS : Windows 11 
Golang 版本: go1.22.0
grpc : 1.2
protobuffer: 1.28

代理

没有代理国内环境下载不了库七牛CDN (试过可用)
go env -w GOPROXY=https://goproxy.cn,direct阿里云代理(运行grpc时下载包出现报错 ):
go env -w GOPROXY=https://mirrors.aliyun.com/goproxy/,direct

环境搭建步骤

1. 安装Golang(略)

2. 设置GOPATH

默认GOPATH是 %USERPROFILE%\go,%USERPROFILE% 一般是 C:\Users\Administrator, 执行 go env GOPATH 可以查看到当前设置的GOPATH, 可以通过修改环境变量修改GOPATH, 例如下图

在这里插入图片描述

3. 设置代理

	执行如下指令, 设置代理go env -w GOPROXY=https://goproxy.cn,direct

4. 安装grpc组件

参考 GRPC官方文档,
执行如下指令安装proto buffer和grpc的golang编译器
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

安装之后GOPATH下就包含你安装的包了, 如下图在这里插入图片描述

5. 下载protoc工具

上一个步骤只是下载了 proto buffer和grpc的golang编译器, 也可以说只是两个插件, 还需要protoc工具来进行调用, 由于我已经安装了, 所以这里提供一下下载路径, 再自行研究一下
Protoc 工具下载

6. 编译grpc示例

  1. 下载GRPC源码
    git clone -b v1.62.0 --depth 1 https://github.com/grpc/grpc-go

  2. 执行示例
    cd grpc-go/examples/helloworld
    go run greeter_server/main.go ## 执行服务端
    go run go run greeter_client/main.go ## 执行客户端

  3. 输出信息

Server :
在这里插入图片描述
Client :
在这里插入图片描述

7. 使用proto工具生成golang支持

4~5步下载了工具还没有使用上, 因为grpc-go的代码示例已经生成好了,在xx\grpc-go\examples\helloworld\helloworld 目录下, 如下图
在这里插入图片描述
将 helloworld.pb.go 和 helloworld_grpc.pb.go 删除或移到备份目录, 我们使用前面下载的工具重新生成一次
执行指令如下, 生成proto buffer的golang支持
D:\Softwares\Paths\msys64\mingw64\bin\protoc.exe --plugin=protoc-gen-go=D:/Softwares/Paths/Golang/bin/protoc-gen-go.exe --go_out=. ./helloworld.proto
执行指令如下, 生成grpc的golang支持
D:\Softwares\Paths\msys64\mingw64\bin\protoc.exe --plugin=protoc-gen-go-grpc=D:/Softwares/Paths/Golang/bin/protoc-gen-go-grpc.exe --go-grpc_out=. ./helloworld.proto

再次执行Server, 出现错误如下
在这里插入图片描述
原因是刚刚生成的文件路径不是在helloworld/helloworld下, 而是生成到下图路径了,
Note: 之所以如此是因为 helloworld.proto里的这一句
option go_package = “google.golang.org/grpc/examples/helloworld/helloworld”;
在这里插入图片描述
正确路径
在这里插入图片描述
再次执行Server,成功

参考

GRPC 官方文档
Golang 下载
Go专家编程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/273135.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Qt ini配置文件

ini文件用于保存用户的设置操作,下列以背景颜色设置为例子 暂时默认设置为白色背景 这段代码放置在主窗口的构造函数中,用于初始化读取ini文件 QString color;//第一个参数在我这里ini文件时相对路径需要放在工程中,也可以写绝对路径QSettin…

运维:记一次寻找定时任务并删除的经历

前言 我相信接手别人的服务器、或者在没有任何文档的情况去看自己原先的服务器,都或多或少会遇到莫名其妙的服务器独有规则。 比如你服务本身跑的好好的,突然啪的一下,没了! 什么原因导致的呢?其中,很大可能是定时任务在作祟。 原因分析 本次,我遇到的问题是:在Ubuntu系…

017集——圆弧(ARC)转多段线(lwpolyline)——cad vba 中按一定精度拟合加点实现

在国土资源管理项目中,我们经常会遇到CAD转gis数据实现入库,而cad中的arc圆弧转为gis数据只能转出弧的顶点坐标,导致图形变形失真。若一个一个对弧进行手工增加点转为多段线,耗时耗力,效率极其低下。这里给出解决方案&…

微软亚太区AI智能应用创新业务负责人许豪,将出席“ISIG-AIGC技术与应用发展峰会”

3月16日,第四届「ISIG中国产业智能大会」将在上海中庚聚龙酒店拉开序幕。本届大会由苏州市金融科技协会指导,企智未来科技(AIGC开放社区、RPA中国、LowCode低码时代)主办。大会旨在聚合每一位产业成员的力量,深入探索A…

[QT]自定义的QtabWidget

需求 最近有一个需求就是一个QTabWidget要求有四个tab页在左侧用于显示主页面&#xff0c;在右侧有一个关于按钮&#xff0c;点击后用于弹出窗口显示一些程序相关信息。主要是怎么实现右侧按钮 相关代码 #ifndef MYTABWIDGET_H #define MYTABWIDGET_H#include <QWidget&g…

如何保证消息的可靠传输

数据的丢失问题&#xff0c;可能出现在生产者、MQ、消费者中 生产者丢失&#xff1a; 生产者将数据发送到 RabbitMQ 的时候&#xff0c;可能数据就在半路给搞丢了&#xff0c;因为网络问题啥的&#xff0c;都有可能。此时可以选择用 RabbitMQ 提供的事务功能&#xff0c;就是生…

std::function模板类性能问题

背景 题目&#xff1a;最近发现记忆化搜索真的很好用&#xff0c;于是在做力扣上记忆化搜索相关的题目时&#xff0c;用这种方法重做了一下买卖股票问题。 问题来源 在写递归代码的时候&#xff0c;我学习了一种匿名函数的写法&#xff0c;直接在函数体内写function<int(…

SpringBoot 多环境的配置(附带有截图)

文章目录 概要整体配置流程配置详细说明技术细节小结 概要 多环境开发 在实际项目开发中&#xff0c;一般需要针对不同的运行环境&#xff0c;如开发环境、测试环境、生产环境等&#xff0c;每个运行环境的数据库等配置都不相同&#xff0c;每次发布测试、更新生产都需要手动…

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型

【MATLAB第99期】#源码分享 | 基于MATLAB的SHEPard模型多输入单输出回归预测模型 Shepard模型(简称SP模型)就是一种直观的、可操作的相似预测法&#xff0c;常用于插值。相似预测法基本原理按照相似原因产生相似结果的原则&#xff0c;从历史样本中集中找出与现在的最相似的一…

基于java ssm springboot女士电商平台系统

基于java ssm springboot女士电商平台系统源码文档设计 博主介绍&#xff1a;多年java开发经验&#xff0c;专注Java开发、定制、远程、文档编写指导等,csdn特邀作者、专注于Java技术领域 作者主页 央顺技术团队 Java毕设项目精品实战案例《1000套》 欢迎点赞 收藏 ⭐留言 文末…

Vue3学习记录(六)--- 组合式API之依赖注入和异步组件

一、依赖注入 1、简介 ​ 在前面的笔记中&#xff0c;我们学习过父组件向子组件传递数据时&#xff0c;需要借助props来实现。但如果父组件想要向孙子组件传递数据&#xff0c;那就要连续使用两层props逐级向下传递&#xff0c;如果要接收数据的是更深层的后代组件&#xff0…

数据库(mysql)-新手笔记-基本知识点(1)

基本概念 数据库 Database :存储数据的容器 表 Table : 在数据库中存储的基本结构,它由行和列组成 行 Row : 表中的一条记录 列 Column : 表中的字段,定义了数据的类型和约束 数据类型 数据值 如 INT(整型),FLAOT(浮点型) ,DECIMAL (精确小数点) 字符串 如 VARCHAR(可变长度字…

基于OpenCV的图形分析辨认03

目录 一、前言 二、实验目的 三、实验内容 四、实验过程 一、前言 编程语言&#xff1a;Python&#xff0c;编程软件&#xff1a;vscode或pycharm&#xff0c;必备的第三方库&#xff1a;OpenCV&#xff0c;numpy&#xff0c;matplotlib&#xff0c;os等等。 关于OpenCV&…

微信小程序云开发教程——墨刀原型工具入门(编辑页面)

引言 作为一个小白&#xff0c;小北要怎么在短时间内快速学会微信小程序原型设计&#xff1f; “时间紧&#xff0c;任务重”&#xff0c;这意味着学习时必须把握微信小程序原型设计中的重点、难点&#xff0c;而非面面俱到。 要在短时间内理解、掌握一个工具的使用&#xf…

Hello C++ (c++是什么/c++怎么学/c++推荐书籍)

引言 其实C基础语法基本上已经学完&#xff0c;早就想开始写C的博客了&#xff0c;却因为其他各种事情一直没开始。原计划是想讲Linux系统虚拟机安装的&#xff0c;后来考虑了一下还是算了&#xff0c;等Linux学到一定程度再开始相关博客的写作和发表吧。今天写博客想给C开个头…

excel 动态列导出

excel动态列&#xff0c;只好用poi来写了&#xff0c;也并不复杂&#xff0c;一样就这个件事情抽像为几步&#xff0c;就是套路了&#xff0c;开发效率就上去了。 1 准备空模板 导出操作与excel模板的导出一样&#xff0c;可以参考excel导出标准化 2 自定义SheetWriteHandler …

Python 一步一步教你用pyglet制作汉诺塔游戏

目录 汉诺塔游戏 1. 抓取颜色 2. 绘制圆盘 3. 九层汉塔 4. 绘制塔架 5. 叠加圆盘 6. 游戏框架 汉诺塔游戏 汉诺塔&#xff08;Tower of Hanoi&#xff09;&#xff0c;是一个源于印度古老传说的益智玩具。这个传说讲述了大梵天创造世界的时候&#xff0c;他做了三根金刚…

Python错题集-8:AttributeError(找不到对应的对象的属性)

1问题描述 AttributeError: AxesSubplot object has no attribute arc 2代码详情 import matplotlib.pyplot as plt# 创建一个新的图形和坐标轴 fig, ax plt.subplots()# 定义弧线的参数 center (0.5, 0.5) # 圆心坐标 (x, y) width 1.0 # 半径 height 0.5 # 半径 ang…

使用阿里云服务器搭建网站简单吗?超简单教程

使用阿里云服务器快速搭建网站教程&#xff0c;先为云服务器安装宝塔面板&#xff0c;然后在宝塔面板上新建站点&#xff0c;阿里云服务器网aliyunfuwuqi.com以搭建WordPress网站博客为例&#xff0c;来详细说下从阿里云服务器CPU内存配置选择、Web环境、域名解析到网站上线全流…

AI领域再出“王炸“----Claude3是否会成为下一个“神“

目录 一.Claude3最新发布 二.Claude3支持20万token 三.Claude3在未公开算法上取得重大突破 1.Claude 3读懂博士论文 2.量子跃迁集成&#xff1a; Claude 3智商&#xff1a;101 测试方法 测试细节 通过Karpathy挑战 Claude 3自画像&#xff0c;突破本我 从洛杉矶排到…