接下来要实现该 gRPC 服务,它包含了我们在服务定义中所声明的远程方法。这些方法会通过服务器端暴露出来,gRPC 客户端会连接到服务器端,并调用这些远程方法。

如图 2-2 所示,首先需要编译 ProductInfo 服务定义,然后生成选定语言的源代码。gRPC 为所有流行语言都提供了便于使用的支持,如Java、Go、Python、Ruby、C、C++、Node 等。在实现服务和客户端时,可以任意选择要使用的语言。gRPC 还能跨语言和跨平台运行,这意味着在应用程序中,可以使用某种语言来编写服务器端,而使用另外一种语言来编写客户端。这里将同时使用 Go 语言和 Java 语言来编写客户端和服务器端,你可以任意选择喜欢的实现。

图 2-2:基于服务定义的微服务和消费者

为了根据服务定义生成源代码,可以使用 protocol buffers 编译器来手动编译 proto 文件,也可以使用像 Bazel、Maven 或 Gradle 这样的自动化构建工具。在构建项目时,这些自动化构建工具已有一组预先定义的代码生成规则,但对生成 gRPC 服务和客户端的源代码来说,与现有的构建工具集成通常会更为容易。

本章示例将使用 Gradle 来构建 Java 应用程序,并使用 Gradle protocolbuffers 插件来生成服务和客户端代码,同时使用 protocol buffers 编译器来生成 Go 应用程序的代码。

接下来将使用 Go 语言和 Java 语言生成 gRPC 服务器端和客户端。在此之前,必须确保本地计算机已安装了 Java 7 或更高版本以及 Go 1.11 或更高版本。

文档更新时间: 2023-09-02 03:43   作者:Minho