Protocol Buffers(简称:ProtoBuf)是一种开源跨平台的序列化数据结构的协议。其对于存储资料或在网络上进行通信的程序是很有用的。这个方法包含一个接口描述语言,描述一些数据结构,并提供程序工具根据这些描述产生代码,这些代码将用来生成或解析代表这些数据结构的字节流。
Google最初开发了Protocol Buffers用于内部使用。Protocol Buffers的设计目标是简单和性能。特别地,它被设计地与XML相比更小且更快。
Protocol Buffers在Google内被广泛用来存储和交换各种类型的结构化数据。在Google,它被当作一个RPC系统的基础,并被用于几乎所有的跨服务器通信。
Protocol Buffers和Apache Thrift和Ion等协议很相似,同时也提供了一个RPC协议栈gRPC来给上层服务使用。
以上抄自维基百科
就是和JSON一样一个跨平台传输数据的东西,只是和JSON比起来有各种各样的优点还配有代码生成器不用自己写解析和转换代码(JSON转数组,JSON转对象等),用起来非常方便。
基本用法
syntax = "proto3"; // 版本
// 创建一个给字符串md5的服务
package hash; // 包名
// 支持import其他proto文件
// protoc-gen-go 版本大于1.4.0, proto文件需要加上go_package,否则无法生成
option go_package = "./hash"; // 这里不同语言不一样,这里就列举了go
// 声明一个HashType枚举 需要返回的是大写还是小写
enum HashType {
UPPER = 0;
LOWER = 1;
}
// 声明一个Request数据结构用来接收数据,最后会生成对应的结构体
message Request {
string str = 1; // 字段的定义格式 类型 名称 = key
string salt = 2;// 后面的数字就相当于数组的key不能重复
optional HashType type = 3;
// 支持的类型非常多就不一一列举了
}
// 声明一个Response数据结构用来返回数据,最后会生成对应的结构体
message Response {
string md5Str = 1;
}
// 创建个hash服务 里面提供一个HashStr RPC方法接收Request 返回Response
service hash {
rpc HashStr(Request) returns (Response) {}
}
安装生成代码工具
- 安装protoc命令 :https://github.com/protocolbuffers/protobuf/releases
- 下载对应版本解压,把bin目录加入到环境变量
- 命令行执行
protoc --version
显示版本号代表安装成功
安装生成golang代码工具:protoc-gen-g
go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
生成代码
#仅生成数据结构 在当前位置 使用当前位置下的全部proto文件
protoc --go_out ./ ./*.proto
#生成带服务的代码
protoc --go_out=plugins=grpc:. *.proto
#生成PHP代码
protoc -I. \
--php_out=./ \
--grpc_out=./ \
--plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin \
*.proto
执行完就可以生成对应的server以及client代码和数据结构啦
微服务相关文章
一个简单的微服务系统架构笔记
评论 (0)