开张课、RPC入门、创建中间文件

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 文件了

好了,先到这里

posted @ 2019-11-21 11:27  人间最美二月天  阅读(240)  评论(0编辑  收藏  举报