1.protobuf简介
Protobuf是Protocol Buffers的简称,它是Google公司开发的一种数据描述语言,是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化 。它很适合做数据存储或 RPC 数据交换格式。可用于通讯协议、数据存储等领域的语言无关、平台无关、可扩展的序列化结构数据格式。目前提供了 C++、Java、Python 三种语言的 API。
protobuf是类似与json、xml一样的数据描述语言(数据格式)
protobuf非常适合于RPC数据交换格式
注意:protobuf本身并不是和gRPC绑定的。它也可以被用于非RPC场景,如存储等
2.protobuf关键特性和概念
语言无关:Protobuf不依赖于特定的编程语言,这意味着您可以使用一个简单的语言无关接口描述语言(IDL)定义数据结构,然后生成适用于各种编程语言的代码来处理这些结构。
数据结构定义:Protobuf使用结构化模式定义语言来定义要序列化的数据的结构。这个模式被编写在一个.proto文件中,它定义了数据结构的字段、类型和可选元数据。
紧凑的二进制格式:Protobuf将结构化数据序列化为二进制格式,这种格式比传统的基于文本的格式(如XML或JSON)更紧凑和高效。较小的大小减少了带宽和存储需求,使其非常适用于网络通信或存储大量数据。
高效的编码和解码:Protobuf使用高效的编码和解码机制,可以快速地对数据进行序列化和反序列化。二进制格式经过了优化,以提高速度,生成的代码提供了方便的API来处理序列化的数据。
3.protobuf的优缺点
1)优点:
序列化后体积相比Json和XML很小,适合网络传输
序列化反序列化速度很快,快于Json的处理速度
消息格式升级和兼容性还不错
支持跨平台多语言
2)缺点:
应用不够广(相比xml和json)
二进制格式导致可读性差
缺乏自描述