Hello and welcome to TECH SCHOOL. In this course, we're going to learn about gRPC and how to use it with protocol buffer to develop an application in Go and Java.

Here's the link to the full gRPC course playlist on Youtube
Gitlab repository: pcbook-go and pcbook-java

Why gRPC?

让我们从一个简单的问题开始:gRPC的动机是什么? 还是gRPC试图解决的问题是什么?

好吧,答案是沟通。

应用程序是使用不同的编程语言编写的。 例如,后端可以用Go编写,而前端(例如android app用Java编写,iOS app用Swift编写)。 那么他们如何互相交谈?

当今的趋势是使用微服务架构。 因此,即使在后端,根据业务需求和技术约束,我们可能还会有许多用不同语言(例如Go,Python或Rust)编写的服务。

gRPC简介:为什么,什么,如何?

因此,为了彼此通信,他们必须都同意一组API合同。 例如:通信通道,身份验证机制,有效载荷格式,数据模型以及如何处理错误。

有太多事情需要考虑,这就是为什么构建API真的很困难。

gRPC简介:为什么,什么,如何?

更重要的是,我们希望沟通高效,快速且轻巧。 您知道,微服务之间的交换消息数量巨大。 因此,沟通越快越好。

另外,在某些环境(例如移动应用)中,网络速度和带宽受到限制,拥有轻量级的通信协议与服务器进行交互非常重要。

最后但并非最不重要的一点是,我们希望沟通很简单。 假设我们正在构建一个包含数百个甚至数千个微服务的系统。 我们绝对不希望将大部分时间花在编写代码上只是为了让他们彼此交谈,对吗?

我们想要的是某种框架,允许开发人员专注于实现其服务的核心逻辑。 并将其他所有内容留给框架处理。

该框架不过是gRPC。

What is gRPC? How it works?

gRPC是最初由Google开发的高性能,开源,功能丰富的RPC框架,现在与Kubernetes或Prometheus一样,它是云本机计算基础(或CNCF)的一部分。

好那怎么了G in GRPC stands for? At first I thouGht it’s GooGle (yeah, you know why). But in fact, it stands for different thinGs in each GRPC release, such as “Good”, “Green”, “Glorious”, and even “GRPC” itself.

You can check out the full list in this link.

gRPC简介:为什么,什么,如何?

RPC怎么样? RPC代表远程过程调用。 它是允许程序执行位于其他计算机上的另一个程序的过程的协议。

令人敬畏的是,开发人员不必明确编码网络交互的细节。 它由基础框架自动处理。

因此,在客户端代码中,看起来我们只是在直接调用服务器代码的功能。 即使客户端和服务器上的代码是用不同的编程语言编写的,它也可以工作。 像本示例一样,客户端代码用Go编写,服务器代码用Rust编写。

gRPC简介:为什么,什么,如何?

那么gRPC如何做到这一点? 基本上,客户端具有一个存根,该存根提供与服务器相同的方法(或功能)。 该存根由gRPC自动为您生成。

存根将在后台调用gRPC框架,以通过网络与服务器交换信息。

瞧,神奇的是一切正常。 由于存根,客户端和服务器现在只需要关心实现其核心服务逻辑。

gRPC简介:为什么,什么,如何?

接下来,我们将看到如何在协议缓冲区的帮助下生成gRPC存根。

How gRPC generates codes?

代码生成是gRPC的最重要功能之一。

为了为服务器和客户端生成存根,我们首先需要编写API协定,该协定包括在协议缓冲文件中的服务及其有效载荷消息的描述,如下所示:

gRPC简介:为什么,什么,如何?

在此文件中,定义了一个Hello方法,该方法将HelloRequest作为输入并返回HelloResponse。 HelloRequest仅包含一个字符串名称,而HelloResponse具有一个字符串。

很简单,对吧? 稍后,我们将在protobuf讲座的动手操作中了解有关此问题的更多详细信息。

协议缓冲区编译器(或协议)从此协议文件生成服务器和客户端存根代码。 根据编程语言,我们将不得不告诉编译器为其使用正确的gRPC插件。

为Rust和Go生成的代码将如下所示:

gRPC简介:为什么,什么,如何?

OK,所以您可能想知道为什么gRPC使用协议缓冲区? 好吧,有很多原因。

首先,它非常易于阅读和理解。

其次,它的语言可与多种语言自动生成代码互操作

第三,它表示二进制格式的数据,与某些基于文本的格式(如JSON或XML)相比,它的大小更小,传输速度更快,序列化的效率更高。

它在客户端和服务器之间提供了一种强类型的API契约,使用它非常安全。

它具有用于API演化的大量规则,以确保向后和向前的兼容性。

gRPC简介:为什么,什么,如何?

听起来很棒,对吗? 但是,使用gRPC需要协议缓冲区吗?

答案是不。 您可以改用Google Flatbuffers或Microsoft Bond。 但是我认为协议缓冲已经是一个不错的选择。

它支持许多流行的编程语言,其中10种已正式支持,其中纯实现了Go,Java,NodeJS,另外7种是gRPC核心C的包装,即C ++,C#,Objective-C,Python,Ruby,Dart 和PHP。

此外,还有许多其他语言的非官方库,例如Swift,Rust,TypeScript,Haskell等。

gRPC简介:为什么,什么,如何?

好了,现在我们知道gRPC如何为我们生成代码。 希望您觉得有趣。

在下一讲中,我们将探讨gRPC的另一秘密武器:HTTP / 2。 回头见。

from: https://dev.to//techschoolguru/introduction-to-grpc-why-what-how-4194

相关文章:

  • 2021-09-11
  • 2023-01-14
  • 2021-07-03
  • 2021-12-18
  • 2021-10-07
  • 2022-12-23
  • 2021-10-10
猜你喜欢
  • 2021-05-07
  • 2021-07-14
  • 2021-07-03
  • 2022-01-17
  • 2021-11-23
相关资源
相似解决方案