Protocol buffers

发布时间 2023-05-04 17:26:31作者: 弩哥++

Protocol Buffers是一种轻便、高效的数据交换格式,由Google开发和开源。它基于二进制序列化,可以被用于数据存储、通讯协议、数据通信等多个领域。

Protocol Buffers的优点在于其极小的体积和高效的解析速度。与XML、JSON等文本标记语言相比,Protocol Buffers是二进制格式的,其序列化后的数据体积小,传输速度快。此外,Protocol Buffers有严格的格式规范,使得其解析速度非常高效。

使用Protocol Buffers时,首先需要定义好需要传输的数据的格式,即Proto文件。使用Proto文件定义数据格式后,就可以使用提供的代码生成工具生成对应语言的数据访问类,在应用中便可以使用这些类进行数据编解码。

总体来说,Protocol Buffers是一种非常高效的数据交换格式,尤其适用于数据传输量较大、网络带宽较小或数据响应速度要求较高的领域。

一、官网文档地址

https://protobuf.dev/

image

二、安装

  1. 下载protocol buffer的编译器
    https://github.com/protocolbuffers/protobuf#protocol-compiler-installation
  2. 这里我选择下载的是windows 64版本
    image
  3. 下载完成后,进行解压,然后配置系统path的环境变量,比如我这里的是D:\Soft\protoc\bin
  4. 如果语言使用的是golang,那么还需要下载对应go语言的代码生成工具

The protocol buffer compiler requires a plugin to generate Go code. Install it using Go 1.16 or higher by running:

go install google.golang.org/protobuf/cmd/protoc-gen-go@latest

三、什么是protoc

protoc是protobuf文件(.proto)的编译器,可以借助这个工具把 .proto 文件转译成各种编程语言对应的源码,包含数据类型定义、调用接口等。
image

四、什么是protoc-gen-go

protoc-gen-go是protobuf编译插件系列中的Go版本

五、protoc的编译流程

  • 解析.proto文件,转译成protobuf的原生数据结构在内存中保存;
  • 把protobuf相关的数据结构传递给相应语言的编译插件,由插件负责根据接收到的protobuf原生结构渲染输出特定语言的模板。

六、简单使用

  1. 创建一个user.proto文件
syntax="proto3";//protocol buffer 版本号,这里使用3,还有2的版本

package tutorial; //编译后生成的包名

option go_package="./tutorial";//生成包的路径

//定义一个消息
message user {
  string name=1;
  int32 age=2;
}

  1. 在终端输入以下命令
#--go_out 输出路径
protoc --go_out=./ ./user.proto

  1. 下图是官方文档给出的示例
    image

  2. 生成的文件是一个user.pb.go文件
    image