Protocol Buffers
一句话简介
Google 开发的高效结构化数据序列化框架,支持跨语言数据交换,体积小、速度快,是 RPC 和数据存储的事实标准。
标签
适用应用场景
- 微服务间高效数据传输
- 配置文件与数据存储
- 跨平台网络通信协议定义
- gRPC 接口定义语言底层支撑
README 中文摘要
Protocol Buffers 简介
Protocol Buffers(protobuf)是 Google 推出的语言中立、平台中立、可扩展的结构化数据序列化机制。完整文档可在官方站点查阅。
安装组成
安装 protobuf 需要两部分:
- protoc 编译器:用于将
.proto文件编译为目标语言代码。 - protobuf 运行时库:对应所选编程语言的运行时支持。
源码使用建议
大多数用户应从官方发布版本获取预构建产物。如果从主分支 HEAD 拉取构建,可能遇到源码不兼容变更或未经充分测试的不稳定行为。若使用 C++ 或需要在项目中本地构建 protobuf,应固定到发布分支上的某个发布提交,因为发布分支在两次发布之间也可能存在不稳定因素。
Bazel 集成
Bzlmod 方式(Bazel 8 及以上)
在 MODULE.bazel 中声明依赖:
bazel_dep(name = "protobuf", version = <VERSION>)
如需自定义仓库名以兼容 WORKSPACE,可指定 repo_name:
bazel_dep(name = "protobuf", version = <VERSION>, repo_name = "com_google_protobuf")
WORKSPACE 方式
在 WORKSPACE 文件中添加 http_archive 拉取源码,并依次加载相关依赖:
http_archive(
name = "com_google_protobuf",
strip_prefix = "protobuf-VERSION",
sha256 = ...,
url = ...,
)
load("@com_google_protobuf//:protobuf_deps.bzl", "protobuf_deps")
protobuf_deps()
load("@rules_java//java:rules_java_deps.bzl", "rules_java_dependencies")
rules_java_dependencies()
load("@rules_java//java:repositories.bzl", "rules_java_toolchains")
rules_java_toolchains()
load("@rules_python//python:repositories.bzl", "py_repositories")
py_repositories()
注:自 30.x 版本起,需额外加载
rules_java与rules_python相关规则。
编译器安装
protoc 编译器本身由 C++ 编写。使用 C++ 的用户应参考 src/README.md 一并安装编译器与 C++ 运行时。
非 C++ 用户最简便的方式是从 GitHub Releases 页面下载预构建二进制包 protoc-$VERSION-$PLATFORM.zip,其中包含 protoc 可执行文件以及随 protobuf 分发的标准 .proto 文件。
若发布页面未提供所需旧版本,可前往 Maven 仓库查找。这些预构建二进制仅针对发布版本提供;若需使用 HEAD 版本、修改 protobuf 代码,或使用 C++,建议从源码自行构建。
运行时安装
protobuf 支持多种编程语言,各语言的运行时安装说明位于对应源码目录:
| 语言 | 位置 |
|---|---|
| C++(含运行时与 protoc) | src |
| Java | java |
| Python | python |
| Objective-C | objectivec |
| C# | csharp |
| Ruby | ruby |
| Go | protocolbuffers/protobuf-go |
| PHP | php |
| Dart | dart-lang/protobuf |
| JavaScript | protocolbuffers/protobuf-javascript |
入门指引
推荐通过开发者指南中的教程学习 protobuf 用法,也可参考 examples 目录中的代码示例。
支持策略
官方文档中提供了语言库的支持周期说明,建议定期查阅以了解各语言运行时版本的支持时间窗口。
社区
如需关注 Protocol Buffers 的变更动态并与开发者及用户交流,可加入 Google Group 邮件列表。
摘要更新于 2026-08-22 00:32:09
· 原文 6164 字符
· md5 e95e2167ba85…