【gRPC】快速入门

本文介绍了RPC的概念及其在分布式系统中的作用,重点讲解了gRPC的使用,包括protobuf编译器的下载、安装与配置。通过一个HelloWorld示例,演示了如何定义数据格式、生成Go代码并进行服务端和客户端的编写与测试。同时,探讨了proto字段修饰符以及服务定义,为读者提供了gRPC入门的基础知识。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

介绍

rpc也叫远程过程调用,允许一台服务器调用远程的另一台服务器中的代码,并获取返回值。grpc是一款与语言,平台无关的rpc,默认基于protobuf序列化与反序列化协议

安装ProtoBuf通用编译器

protobuf优势

1、体积小
2、速度快
3、跨平台多语言
4、兼容性好

为什么要下载这个

因为protobuf的序列化和反序列化过程很复杂,所以我们需要一个中间工具帮我们自动生成代码。
如果能自己手写,也可以不下👻

下载地址

https://github.com/protocolbuffers/protobuf/releases
在这里插入图片描述
ps:如果是32位系统或者是linux系统就选择上面哪些

后续

下载完毕后,解压,配置环境变量,即可
在这里插入图片描述
在这里插入图片描述

安装go专用编译器

说明

上面那个只是通用编译器,需要搭配go语言的特定编译器功能才完整

下载

go get github.com/golang/protobuf/protoc-gen-go
直接在终端安装即可,不需要配置环境变量,因为它已经下载到gopath里面了

写一个Helloworld

新建一个go项目

在这里插入图片描述

首先需要定义数据格式,编译器才知道如何去构建代码

protofile/helloworld.proto
在这里插入图片描述

生成代码

在终端下执行
protoc --go_out=./ helloworld.proto
这里解释下为什么helloworld.proto中已经指定了输出文件夹还要指定go_out,这两个参数其实是一起工作的,最终的生成路径就是go_out+go_package拼接的结果
在这里插入图片描述
看到这样子一个文件,就说明成功了

纠错一下

这个最好不要把生成的代码放到proto文件夹下面,这样子proto和刚刚go get下来的那个包名冲突了,所以最好改一下(后面我改成proto_obj了)

测试

在这里插入图片描述
在这里插入图片描述

测试代码比较简单,就不多说了

proto语法再探究

字段修饰符

required:表示该字段不能为空(proto3已经取消了,变成默认值了)
optional:表示该字段可以为空
repeated:相当于数组

嵌套使用和嵌套定义

在这里插入图片描述
在这里插入图片描述

定义服务

相当于定义接口,后面会用到
在这里插入图片描述

grcp实例

项目结构

在这里插入图片描述

编写proto

在这里插入图片描述

生成代码

protoc --go_out=plugins=grpc:./ .\product.proto
这里生成了.pb.go文件后需要按照上面的项目结构分别复制到客户端和服务端

编写服务端

在这里插入图片描述
在这里插入图片描述

编写测试客户端

在这里插入图片描述

测试

分别运行服务端、客户端,发现客户端能正常输出服务端返回的数据,说明成功了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值