第 2 章 Protobuf 入门
现在我们已经理解了 gRPC 背后的基本网络概念,我们可以讨论构建 gRPC API 过程中另一个支柱——协议缓冲区(Protocol Buffers),通常简称为 Protobuf
。它是通信过程中的一个重要组成部分,因为正如我们在上一章中看到的,每个消息都会被编码为二进制数据,而这正是 Protobuf
在 gRPC 中为我们完成的工作。本章的目标是理解 Protobuf 是什么,以及它为何在高效通信中是必需的。最后,我们还将关注一些有关消息序列化和反序列化的细节。
在本章中,我们将讨论以下主要主题:
-
Protobuf
是一种接口描述语言(IDL
) -
序列化/反序列化
-
Protobuf
与JSON
的对比 -
编码细节
-
常见类型
-
服务
先决条件
本章的代码可以在以下地址找到: https://github.com/PacktPublishing/gRPCGo-for-Professionals/tree/main/chapter2 。在本章中,我们将讨论 Protocol Buffers 如何序列化和反序列化数据。虽然这可以通过编写代码来完成,但我们将避免这样做,而是学习如何使用 protoc
编译器来调试和优化我们的 Protobuf
模式。因此,如果你想重现本章中指定的示例,你需要从 Protobuf
的 GitHub 发布页面 下载 protoc
编译器。最简单的开始方式是下载二进制发布文件。这些发布文件按照以下命名约定命名:protoc-${VERSION}-${OS}-${ARCHITECTURE}
。解压 zip 文件并按照 readme.txt
中的说明进行操作(注意:我们未来会使用一些常见类型,所以确保你也安装了包括文件)。完成这些操作后,你应该能够运行以下命令来验证安装:
$ protoc --version
最后,像往常一样,你可以在 GitHub 仓库的当前章节文件夹(chapter2
)中找到配套代码。