第 3 章 gPRC 简介

现在我们对数据如何在网络中流动以及 Protobuf 如何工作有了基本的理解,接下来我们可以进入 gRPC 的世界。在本章中,我们的目标是了解 gRPC 在 HTTP/2 上做了什么,为什么 Protobuf 是 gRPC 的完美契合,同时也要了解 gRPC 是一项成熟的技术,得到了行业内主要公司的支持。这将帮助我们理解为什么 gRPC 被描述为 “Protobuf over HTTP/2”,并让我们在使用它时不会担心技术过于新颖或缺乏社区支持。

在本章中,我们将覆盖以下主要内容:

  • gRPC 的主要使用场景

  • 使用 Protobuf 的优势

  • gRPC 在 Protobuf 上的作用

先决条件

你可以在这个链接中找到本章的代码: GitHub代码库。在本章中,我将使用 protoc.proto 文件生成 Go 代码。这意味着你需要确保已经安装了 protoc。你可以从 Protobuf GitHub 仓库的 Releases 页面 下载一个压缩包,解压后按照 readme.txt 文件中的说明进行操作。(注意:我们将在未来使用 Well-Known Types,所以确保你也安装了包括文件。)

除了 protoc,你还需要两个 protoc 插件:protoc-gen-goprotoc-gen-go-grpc。前者生成 Protobuf 代码,后者生成 gRPC 代码。要安装它们,你可以运行以下命令:

$ go install google.golang.org/protobuf/cmd/protoc-gen-go@latest
$ go install google.golang.org/grpc/cmd/protoc-gen-go-grpc@latest

最后,确保你的 GOPATH 环境变量已经添加到 PATH 环境变量中。通常,在安装 Go 时这会自动完成,但如果你遇到与找不到 protoc-gen-goprotoc-gen-go-grpc 相关的错误,你可能需要手动添加。你可以通过以下命令来获取 GOPATH 环境变量:

$ go env GOPATH

然后,根据你的操作系统,按照步骤将输出值添加到你的 PATH 环境变量中。