rpc:远程调用
基本原理
整个过程就是:
1、客户端 发送 数据(以字节流的方式)
2、服务端接收,并解析。 根据 约定 知道要知道执行什么。然后把结果返回客户端
RPC就是 把
1、上述过程封装下,使其操作更加优化
2、使用一些大家都认可的协议 使其规范化
3、做成一些框架。直接或间接产生利益
刚才我们讲的“赚钱利器” 其中一个框架就是一款语言中立、平台中立、开源的远程过程调用(RPC)框架
gRpc 。支持java、c++、golang、php多个语言版本。
我们只需要关心 golang版本
https://github.com/grpc/grpc-go
开始我们的项目
创建一个空项目,使用go module的方式
go mod com.zzg
安装
go get -u google.golang.org/grpc
Protobuf 协议
等一下,我们还需要一些协议(如http写,tcp协议,socket协议),这里我们使用 Protobuf 协议
Protobuf 是啥,英文名称是 Google Protocol Buffer( 简称 Protobuf)
它是一种轻便高效的序列化数据结构的协议,可以用于网络通信和数据存储。
特点(优点):性能高、传输快、维护方便,反正就是各种好,各种棒,一些第三方rpc库都会支持protobuf
github地址:
https://github.com/protocolbuffers/protobuf
golang库所属地址
https://github.com/golang/protobuf
protobuf 协议需要编写 xxx.proto 文件,然后通过 protoc-gen-go 来生成 go 源码
这时候,我们需要安装 protoc-gen-go
安装 protoc-gen-go
windows环境下安装
第一步来到这: 查看 https://github.com/protocolbuffers/protobuf/blob/master/src/README.md#c-installation---windows,看看安装说明,也可以不看
来到这里 https://github.com/protocolbuffers/protobuf/releases/latest 下载对应的版本安装,我们这里下载 protoc-3.10.1-win64.zip
解压后放到 某个 你喜欢的文件夹中(不可以有中文,不能有空格,没有为什么)
譬如我放在了D:\systool\protoc39
然后把 D:\systool\protoc39\bin 加入环境变量
这是protobuf编译器,将.proto文件,转译成protobuf的原生数据结构
protobuf相关文档
https://developers.google.com/protocol-buffers/docs/gotutorial
再安装 protoc-gen-go 包
go get github.com/golang/protobuf/protoc-gen-go
此时会在你的GOPATH 的bin目录下生成可执行文件. protobuf的编译器插件protoc-gen-go
等下我们执行protoc 命令时 就会自动调用这个插件
一些准备完毕,开始编写 proto 文件吧
新建 ProdService.proto 文件,填入下面的内容
syntax="proto3"; package services; message ProdRequest { int32 prod_id =1; //传入的商品ID,1代表顺序啊 } message ProdResponse{ int32 prod_stock=1;//商品库存 }
然后执行 protoc --go_out=你的生成go源码目录 Prod.proto(你的proto文件)
执行之后就会生成 ProdService.pb.go 文件了
好了,先到这里