第 2 章 Protobuf 入门

现在我们已经理解了 gRPC 背后的基本网络概念,我们可以讨论构建 gRPC API 过程中另一个支柱——协议缓冲区(Protocol Buffers),通常简称为 Protobuf。它是通信过程中的一个重要组成部分,因为正如我们在上一章中看到的,每个消息都会被编码为二进制数据,而这正是 Protobuf 在 gRPC 中为我们完成的工作。本章的目标是理解 Protobuf 是什么,以及它为何在高效通信中是必需的。最后,我们还将关注一些有关消息序列化和反序列化的细节。

在本章中,我们将讨论以下主要主题:

  • Protobuf 是一种接口描述语言(IDL

  • 序列化/反序列化

  • ProtobufJSON 的对比

  • 编码细节

  • 常见类型

  • 服务

先决条件

本章的代码可以在以下地址找到: https://github.com/PacktPublishing/gRPCGo-for-Professionals/tree/main/chapter2 。在本章中,我们将讨论 Protocol Buffers 如何序列化和反序列化数据。虽然这可以通过编写代码来完成,但我们将避免这样做,而是学习如何使用 protoc 编译器来调试和优化我们的 Protobuf 模式。因此,如果你想重现本章中指定的示例,你需要从 ProtobufGitHub 发布页面 下载 protoc 编译器。最简单的开始方式是下载二进制发布文件。这些发布文件按照以下命名约定命名:protoc-${VERSION}-${OS}-${ARCHITECTURE}。解压 zip 文件并按照 readme.txt 中的说明进行操作(注意:我们未来会使用一些常见类型,所以确保你也安装了包括文件)。完成这些操作后,你应该能够运行以下命令来验证安装:

$ protoc --version

最后,像往常一样,你可以在 GitHub 仓库的当前章节文件夹(chapter2)中找到配套代码。