Jartap Jartap
首页
  • Protobuf
  • 安装
  • 快速入门
  • 基础语法
  • 枚举(enum)类型
  • 嵌套消息与导入(import)
  • 包(package)与命名空间
  • 选项(options)使用
  • oneof字段
  • map类型
  • 保留字段与保留枚举值
  • 任意类型(Any)
  • 时间戳与持续时间
  • 自定义选项与扩展
  • 编码原理
    • Varint编码
    • 长度前缀编码
    • 消息结构编码
    • 二进制格式解析
  • 性能优化
    • 消息设计最佳实践
    • 减少内存分配的策略
    • 重复字段与打包
    • 性能基准测试与对比
    • 大消息处理技巧

Protobuf

Protobuf的全称是 "Protocol Buffers"(通常简称为 Protobuf),它是 Google 开发的一种高效、跨平台的数据序列化格式,主要用于:

  • 网络通信(如 gRPC)
  • 数据存储(替代 JSON/XML)
  • 跨语言数据交换(支持 Java/C++/Python/Go 等)

关键特点:

  1. 二进制编码:比 JSON/XML 更紧凑,解析更快。
  2. 强类型 Schema:通过 .proto 文件定义数据结构。
  3. 跨语言支持:自动生成代码(如 protoc 编译器)。
  4. 向后兼容:支持字段扩展而不破坏旧代码。

示例 .proto 文件:

syntax = "proto3";  // 声明使用 proto3

message Person {
  string name = 1;
  int32 age = 2;
  repeated string hobbies = 3;  // 列表类型
}

常见使用场景:

  • 微服务通信(gRPC 默认使用 protobuf)
  • 大数据存储(如 Kafka 消息序列化)
  • 移动端数据传输(节省流量)

链接资源

中文网:https://protobuf.com.cn/overview/

官方网站:https://protobuf.dev