第 1 章. gRPC 简介
本作品已使用人工智能进行翻译。欢迎您提供反馈和意见:translation-feedback@oreilly.com
现代软件应用程序很少单独运行。相反,它们通过计算机网络相互连接,并通过相互传递信息进行通信和协调行动。因此,现代软件系统是分布式软件应用程序的集合,它们运行在不同的网络位置,并通过使用不同的通信协议进行信息传递来相互通信。例如,在线零售软件系统由多个分布式应用程序组成,如订单管理应用程序、目录应用程序、数据库等。为了实现在线零售系统的业务功能,这些分布式应用程序之间必须实现互联。
随着微服务架构和云原生架构的出现,为多种业务能力而构建的传统软件应用程序被进一步分离成一系列细粒度、自主和面向业务能力的实体,即微服务。因此,基于微服务的软件系统还需要利用进程间(或服务间或应用间)通信技术,通过网络将微服务连接起来。举例来说,如果我们考虑使用微服务架构实现的同一个在线零售系统,就会发现有多个相互连接的微服务,如订单管理、搜索、结账、发货等。与传统应用程序不同,由于微服务的细粒度特性,网络通信链路的数量会激增。因此,无论您使用哪种架构风格(传统架构或微服务架构),进程间通信技术都是现代分布式软件应用程序最重要的方面之一。
进程间通信通常使用同步请求-响应式或异步事件驱动式的消息传递来实现。在同步通信样式中,客户端进程通过 Network+ 向服务器进程发送请求消息,并等待响应消息。在异步事件驱动消息传递中,进程通过使用称为事件代理的中介进行异步消息传递通信。根据业务用例,您可以选择要实现的通信模式。
在为现代 Cloud 本机应用程序和微服务构建同步请求-响应式通信时,最常见、最传统的方法是将它们构建为 RESTful 服务,将应用程序或服务建模为资源集合,通过 HTTP 协议进行网络调用,访问这些资源并更改其状态。然而,对于大多数用例而言,RESTful 服务在构建进程间通信时相当笨重、低效且容易出错。通常需要一种比 RESTful 服务更高效的高度可扩展、松散耦合的进程间通信技术。这就是 gRPC 的用武之地,它是一种用于构建分布式应用程序和微服务的现代进程间通信方式(我们将在本章稍后部分对 gRPC 和 RESTful 通信进行对比)。
在本章中,我们将探讨什么是 gRPC 以及发明这种进程间通信协议的主要动机。我们将借助一些实际用例深入探讨 gRPC 协议的关键构件。此外,扎实了解进程间通信技术以及这些技术是如何随着时间的推移而演变的也很重要,这样你才能理解 gRPC 试图解决的关键问题。因此,我们将介绍这些技术,并对它们逐一进行比较和对比。让我们从了解什么是 gRPC 开始讨论 gRPC。
什么是 gRPC?
gRPC("g "在每个 gRPC 版本中代表不同的含义)是一种进程间通信技术,它允许你像调用本地函数一样方便地连接、调用、操作和调试分布式异构应用程序。
开发 gRPC 应用程序时,首先要做的就是定义服务接口。服务接口定义包含的信息有:消费者如何使用服务、允许消费者远程调用哪些方法、调用这些方法时使用哪些方法参数和消息格式等等。我们在服务定义中指定的语言称为接口定义语言(IDL)。
使用该服务定义,可以生成称为服务器骨架的服务器端代码,通过提供底层通信抽象来简化服务器端逻辑。此外,你还可以生成客户端代码(称为客户端存根),它通过提供抽象来简化客户端通信,从而为不同的编程语言隐藏底层通信。客户端可以远程调用服务接口定义中指定的方法,就像调用本地函数一样简单。底层的 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access