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

news2025/5/16 23:46:51

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

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[Linux性能优化] 线程卡顿优化。Linux加入USB(HID)热插拔线程占用CPU优化。Linux中CPU使用率过高优化

文章目录 [Linux性能优化] 线程卡顿优化。0、省流版本一、问题定位:CPU 资源分析二、线程卡顿现场复现线程优化前图片 三、线程卡顿优化方向1.如果是轮询方式2.如果是事件驱动方式 四、修改方式线程优化后图片 [Linux性能优化] 线程卡顿优化。 0、省流版本 如果采…

Ubuntu20.04下如何源码编译Carla,使用UE4源码开跑,踩坑集合

一、简介 作为一个从事算法研究的人员,无人驾驶仿真一直是比较重要的一部分,但是现在比较常见的算法验证都是在carla这个开源仿真平台上做的,所以我有二次开发carla的需求,今天就来讲讲编译CARLA。 网上的教材很多,但还是推荐大家看官网教程:Linux build - CARLA Simul…

26考研——中央处理器_数据通路的功能和基本结构(5)

408答疑 文章目录 三、数据通路的功能和基本结构数据通路的功能数据通路的组成组合逻辑元件(操作元件)时序逻辑元件(状态元件) 数据通路的基本结构CPU 内部单总线方式CPU 内部多总线方式专用数据通路方式 数据通路的操作举例通用寄…

区块链大纲笔记

中心化出现的原因是由于网络的形成(不然就孤立了,这显然不符合现实,如,社会,计算机网路),接着由于网络中结点能力一般不对等同时为了便于管理等一系列问题,导致中心化网络的出现。&a…

浏览器自动化:RPA 解决方案的崛起

1. 引言 在 2025 年,浏览器自动化已成为企业和开发者不可或缺的工具。从网页数据抓取到自动化测试,这项技术不仅提高了效率,还推动了 Web 生态的发展。然而,随着浏览器指纹识别和反机器人检测的进步,传统的本地自动化…

手机换地方ip地址会变化吗?深入解析

在移动互联网时代,我们经常带着手机穿梭于不同地点,无论是出差旅行还是日常通勤。许多用户都好奇:当手机更换使用地点时,IP地址会随之改变吗?本文将深入解析手机IP地址的变化机制,帮助您全面了解这一常见但…

AI工具分享篇 | recraft.ai + figma 复刻技术路线图

recraft 介绍 recraft.ai 主要生成和编辑适合网站、印刷和营销的各种风格的矢量艺术、图标、3d图像和插图。其矢量化功能可将路线图转化为一个矢量图。 recraft 的注册流程非常的简单,邮箱注册即可,无需科学上网,3分钟就能搞定。看不懂英文…

部署安装jenkins.war(2.508)

实验目的:部署jenkins,并与gitlab关联bulid 所需软件:jdk-17_linux-x64_bin.tar.gz jenkins.war apache-tomcat-10.1.40.tar.gz 实验主机:8.10具有java环境,内存最少为4G,cpu双核 目录 jdk安装 …

JS手写代码篇---手写 Object.create

JS手写代码篇 在做手写题的时候,我们要思考两个问题 这个代码的作用是什么能够实现的效果是什么样子 1. 手写 Object.create 思路:创造一个对象,类似于Object.create()方法>将obj作为原型 // 手写 Object.create function create (ob…

spring boot Controller 和 RestController 的区别

spring boot Controller 和 RestController 的区别 5.3.1常用注解 Spring MVC控制器中常使用的注解有如下几种。 Controller Controller 标记在类上。使用Controller 标记的类表示是Spring MVC的Controller对象。分发处理器将会扫描使用了该注解的类,并检测其中的…

LeRobot 项目部署运行逻辑(七)—— ACT 在 Mobile ALOHA 训练与部署

全部流程为:硬件配置 -> 环境安装 -> 遥操作数据采集 -> 数据集可视化 -> 策略训练 -> 策略评估 在之前的笔记中已经完成了绝大部分,最后再记录一下最后的训练部署,算是最简单的部分了 目录 1 ACT 训练 2 ALOHA 部署 3 更…

高频交直流电流测量技术:射频PA与MEMS测试的简单解决方案

随着5G通信和智能传感器技术的快速发展,传统电流测量手段已难以满足现代电子设备的测试需求。最新一代交直流混合测量探头通过突破性的技术创新,正在重新定义射频功率器件和微机电系统的测试标准。 射频功率放大器测试新范式: 在5G基站等高…

原生微信小程序 textarea组件placeholder无法换行的问题解决办法

【问题描述】 微信小程序原生代码,使用文本域,placeholder使用\n 没有效果,网上找了一堆方案说使用 也没有效果 最后在一个前端大佬博客,找到解决办法,CSS设置word-wrap: break-word; white-space: pre-line; 【解决办…

网络协议分析 实验二 IP分片与IPv6

文章目录 索引及重要内容实验2 IP 高级实验实验2.1 IPv4协议分片实验实验2.2 IPV6协议实验2.3 ARP初级 索引及重要内容 实验2 IP 高级实验 实验2.1 IPv4协议分片实验 icmp的不可达报文 实验2.2 IPV6协议 实验2.3 ARP初级 arp –a 查看ARP缓存表内容 arp –s IP地址(格式&…

QT6 源(101)篇一:阅读与注释 QPlainTextEdit,其继承于QAbstractScrollArea,属性学习与测试

(1) (2) (3)属性学习与测试 : (4) (5) 谢谢

工业大数据的定义

目录 工业大数据的定义 工业大数据发展历程 工业大数据的特征 工业大数据的处理流程 工业大数据在处理上面临的挑战 工业大数据的有效处理方案 工业大数据处理相关案例 数益工联 x TDengine 中天钢铁 x TDengine 广州某企业工业互联网项目 x TDengine 格创东智 x TD…

126.在 Vue 3 中使用 OpenLayers 实现绘制正方形、正三角形、正五边形

🗺️ 项目效果(先看效果) 支持点击按钮绘制图形,效果如下: ✅ 正三角形 ✅ 正方形 ✅ 正五边形 ✅ 支持停止绘制 📌 前言 在 Web GIS 的实际项目中,我们经常需要绘制一些规则的图形,比如:正方形、正三角形、正五边形等,这在标注地块、规划图形、布设区域等场景中都…

3DVR制作的工具或平台

3DVR(三维虚拟现实)是利用三维图像技术和虚拟现实技术,将真实场景进行三维扫描并转换成计算机可识别的三维模型,使用户能够在虚拟空间中自由漫游,体验身临其境的感觉。3DVR技术结合了全景拍摄和虚拟现实,提…

高吞吐与低延迟的博弈:Kafka与RabbitMQ数据管道实战指南

摘要 本文全面对比Apache Kafka与RabbitMQ在数据管道中的设计哲学、核心差异及协同方案。结合性能指标、应用场景和企业级实战案例,揭示Kafka在高吞吐流式处理中的优势与RabbitMQ在复杂路由和低延迟传输方面的独特特点;介绍了使用Java生态成熟第三方库(如Apache Kafka Clie…

如何使用WordPress SEO检查器进行实时内容分析

在这篇文章中,我们将带你从头开始了解如何在WordPress中使用SEO检查工具进行实时内容分析。这篇文章面向初学者,帮助你理解SEO的重要性以及如何通过工具提高文章的搜索引擎优化(SEO)效果。 一、什么是SEO内容分析? 内…