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服务。

相关推荐
舒一笑3 分钟前
🚀 PandaCoder 2.0.0 - ES DSL Monitor & SQL Monitor 震撼发布!
后端·ai编程·intellij idea
Java中文社群6 分钟前
服务器被攻击!原因竟然是他?真没想到...
java·后端
Android系统攻城狮7 分钟前
C++进阶之操作符重载函数operator[]:用法实例(四百三十五)
开发语言·c++
SundayBear19 分钟前
嵌入式进阶:C语言内联汇编
c语言·开发语言·汇编
零千叶34 分钟前
【面试】Java JVM 调优面试手册
java·开发语言·jvm
liulilittle43 分钟前
VGW 虚拟路由器ARP剖析
开发语言·c++·编程语言·路由·sd·sdn·vgw
鸡吃丸子1 小时前
Next.js 入门指南
开发语言·javascript·next.js
wjs20241 小时前
《Foundation 滑块:界面设计的艺术与科学》
开发语言
helloworddm1 小时前
Orleans 流系统握手机制时序图
后端·c#
William_cl2 小时前
【C# OOP 入门到精通】从基础概念到 MVC 实战(含 SOLID 原则与完整代码)
开发语言·c#·mvc