Go语言安装proto并且使用gRPC服务(2025最新WINDOWS系统)

1.protobuf简介

protobuf 即 Protocol Buffers,是一种轻便高效的结构化数据存储格式,与语言、平台无关,可扩展可序列化。protobuf 性能和效率大幅度优于 JSON、XML 等其他的结构化数据格式。protobuf 是以二进制方式存储的,占用空间小,但也带来了可读性差的缺点。protobuf 在通信协议和数据存储等领域应用广泛。例如著名的分布式缓存工具 Memcached 的 Go 语言版本groupcache 就使用了 protobuf 作为其 RPC 数据格式。

Protobuf 在 .proto 定义需要处理的结构化数据,可以通过 protoc 工具,将 .proto 文件转换为 C、C++、Golang、Java、Python 等多种语言的代码,兼容性好,易于使用。

2. gPRC 简介

RPC 是远程过程调用 (Remote Procedure Call) 的缩写形式,gRPC 最初是由 Google 创建的,高性能、开源通用、跨语言和平台 的 RPC 框架。

gRPC 使用 Protocol Buffers 定义服务,Protocol Buffers 是一个强大的二进制序列化工具集和语言。

3.安装proto

官方Github链接:Releases · protocolbuffers/protobuf

进入链接后选择自己电脑所属系统的文件压缩包并下载解压到自己GOPATH所在目录

可通过命令行输入echo %GOPATH%或者go env命令找到GOPATH所在目录

目录组成

GOPATH目录下一般由三个文件夹组成,分别是bin,src,pkg。

bin文件夹放的一般是你编译之后产生的可执行程序;

src文件夹放的一般是你的代码;

pkg文件夹放的一般是你的mod扩展;

如果你的GOPATH目录下没有这三个文件夹也没关心,直接新建就好了,再回到系统环境变量中把PATH中添加上你的GOPATH目录。

如何更改环境变量信息

之后,就可以修改自己的环境变量信息了,把解压好的protoc.exe的运行程序移动到bin文件夹中。

到这一步,你的protoc就已经下载好了,可以打开命令行窗口输入protoc --version测试一下如果输出的是

代表你的系统环境变量中PATH下关于GOPATH的目录路径可能有问题,可以尝试修改一下,如果输出的是

代表你的proto的配置已经完成了

4. 安装Go插件

需要安装两个 Go 插件:

protoc-gen-go-grpc:https://pkg.go.dev/google.golang.org/grpc/cmd/protoc-gen-go-grpc

protoc-gen-go:https://pkg.go.dev/google.golang.org/protobuf/cmd/protoc-gen-go

protoc-gen-go-grpc 工具用于在 gRPC 的 protobuf 定义文件中生成服务端的 Go 语言绑定(name_grpc.pb.go 文件)。

protoc-gen-go 是一个 protoc 插件,用于为 Protocol Buffer 语言的 proto2 和 proto3 版本生成 Go 代码(name.pb.go 文件)。

使用 go install 命令安装这两个插件,:

$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

安装后在 ${GOPATH}/bin 目录下将会多出两个命令工具:protoc-gen-go-grpc、protoc-gen-go。

运行 protoc 命令生成 Go 代码时,该命令内部将会在 PATH 环境变量中查找 protoc-gen-go-grpc 和 protoc-gen-go 这两个命令。

5.编写**.proto文件生成.go文件**

在你编写完.proto后缀的文件之后,打开终端进入到项目中.proto文件所在文件夹运行命令

protoc --go_out=. *.proto

之后在该文件夹下就会生成.pb.go后缀的文件,紧接着运行命令

protoc --go-grpc_out=. *.proto

之后就会在该文件夹下生成_grpc.pb.go后缀的文件。

如此一来,你的项目就成功部署到了gRPC服务。

相关推荐
白色的北极熊6 小时前
c语言 输出菱形字符串
c语言·开发语言
jsl_jsl_jsl6 小时前
LLM工具调用速记
后端
YIAN6 小时前
手撸社区后端:一套可落地的用户 - 文章 - 互动体系 MySQL 表设计与优化思路
后端·mysql
学习智者6 小时前
《玄》IDE v3.6.3重磅发布:全功能修复与性能飞跃
开发语言·c++·ide·算法·中文语言 玄
ThinkerQAQ_6 小时前
并发编程(一):先谈硬件——从 count++ 到原子性、可见性与有序性
后端
奔跑吧树袋熊6 小时前
多租户隔离该做到哪一层:从连接池到 ORM 的取舍
开发语言·数据库·oracle·系统架构
岁月如歌77866 小时前
分布式锁完全指南:从数据库到 Redisson 的演进
java·后端·架构
大江东去浪淘尽千古风流人物6 小时前
【LoMa】局部特征匹配重访:从LoMa-B到旋转不变LoMa-R的架构与工程实践
开发语言·深度学习·计算机视觉·r语言·视觉定位·sfm·局部特征匹配
菜鸟~noob2336 小时前
【电子战】测向精度极限——克拉美-罗下限(CRLB)与误差分析【含matlab代码】
开发语言·matlab
m0_734571766 小时前
深入理解C++ 析构函数<二>析构顺序
开发语言·c++