⾕歌架构师分享gRPC与云原⽣应⽤开发Go和Java为例⽂档前⾔
随着微服务和云原⽣相关技术的发展,应⽤程序的架构模式已从传统的单体架构或分层架构转向了分布式的计算架构。尽管分布式架构本⾝有⼀定的开发成本和运维成本,但它所带来的收益是显⽽易见的。
在实现分布式应⽤程序时,我们必须考虑两个因素:⽹络协议和传输载荷的编码。从最早的 RMI+Java 原⽣序列化,到
HTTP+JSON/XML,业界⼀直在尝试寻⼀种兼具⾼效性和可读性的⽅案。虽然在实践微服务的过程中,⼤家普遍愿意采⽤更具语义化的HTTP+JSON 形式,但这种形式有其⾃⾝的局限性,⽐如其⽹络传输载荷低效、接⼝规范松散等。
正是在这样的背景下,gRPC 应运⽽⽣,借助优异的性能和⾕歌的⼤⼒推⼴,gRPC 受到众多⼤⼚青睐。⽬前,gRPC 已经成为云原⽣计算基⾦会的孵化项⽬,并被⼴泛应⽤于众多开源项⽬和企业级项⽬中。
gRPC 最⼤的特点是⾼性能,HTTP/2+protocol buffers 的组合使其在性能⽅⾯具备了天然的优势,这也是 gRPC ⼴受欢迎的重要原因。但是,相对于更成熟稳定的 HTTP+JSON 组合,gRPC 的风险不容低估,⽐如其协议不够稳定、社区相对较⼩等,这些都是在做技术选型的时候需要考虑的重要因素。正如
我们所熟知的,从来就没有“银弹”,作为技术从业者,我们只能去分析和对⽐各种可⽤的技术,根据⾃⾝需求选择最合适的技术⽅案。
如今,软件应⽤程序会经常通过计算机⽹络,借助进程间通信技术实现彼此间的连接。gRPC 是⼀种基于⾼性能 RPC(远程过程调⽤)的现代进程间通信风格,适⽤于构建分布式应⽤程序和微服务。随着微服务云原⽣应⽤程序的出现,gRPC 的采⽤率正在呈指数级增长。
本⽂由浅⼊深,介绍了 gRPC 相关技术,从通信模式到消息编码,从服务跟踪到容器化部署,并且⽂中的所有⽰例都提供了 Java 语⾔和Go 语⾔的两种实现。不管你是只想了解这项新技术,还是想为⾃⼰的项⽬寻新⽅案,相信都能从本⽂中到感兴趣的话题。
⽬录
我们以实际⽤例阐述理论、概念的⽅式编排了本⽂的内容。全⽂⼴泛使⽤ Go 和 Java 编写⽰例代码,帮助你实际运⽤每个概念。我们将本⽂分为 8 章。
第 1 章 gRPC ⼊门;你将了解 gRPC 的基础知识,并将它与 REST、GraphQL 和其他RPC 技术等类似的进程间通信风格进⾏对⽐。
现代软件应⽤程序很少是孤⽴运⾏的,相反,它们会通过计算机⽹络连接在⼀起,并且以互相传递消息的⽅式进⾏通信和协调。因此,现代软件系统是分布式软件应⽤程序的集合,这些应⽤程序在不同的⽹络位置运⾏,并且运⽤不同的通信协议在彼此间传递消息。例如,⼀个在线零售软件系统会由多个分布式应⽤程序组成,如订单管理应⽤程序、商品⽬录应⽤程序和数据库等。为了实现在线零售系统的业务功能,这些分布式应⽤程序需要相互连接。
go和java后端开发劣势
第 2 章 开始使⽤ gRPC;你将初次体验使⽤ Go 或 Java 构建完整的 gRPC 应⽤程序。
关于 gRPC 的理论知识已经介绍得差不多了,接下来根据第 1 章介绍的知识从头构建真正的 gRPC 应⽤程序。本章将分别使⽤ Go 和Java 构建简单的 gRPC 服务以及调⽤该服务的客户端应⽤程序。在此过程中,我们将学习如何使⽤ protocol buffers 声明 gRPC 服务定义、⽣成服务器端⾻架和客户端存根、实现服务的业务逻辑、在 gRPC 服务器上运⾏我们实现的服务并通过 gRPC 客户端应⽤程序调⽤
该服务。
本章继续使⽤第 1 章的在线零售系统,并在这个系统中构建⼀个管理零售商店中所有商品的服务。该服务可以进⾏远程访问,服务的消费者能够向系统添加新的商品,并可以根据所提供的商品 ID 检索商品详情。我们将使⽤ gRPC 建模该服务及其消费者。你可以使⽤任意喜欢
的语⾔来实现这些功能,但本章将使⽤ Go 和 Java 来实现。
第 3 章 gRPC 的通信模式;在这⼀章中,我们将使⽤真实的⽰例探索 gRPC 通信模式。
第 1 章和第 2 章介绍了 gRPC 进程间通信技术的基础知识,其中还涉及构建简单的 gRPC 应⽤程序。到⽬前为⽌,我们已经完成了定义服务接⼝、实现服务、运⾏ gRPC 服务器以及通过 gRPC 客户端应⽤程序远程调⽤服务等操作。客户端和服务器端之间的通信模式是简单的请求–响应风格的通信,这⾥每个请求都会得到⼀个响应。但是,借助 gRPC,可以实现不同的进程间通信模式(也称 RPC 风格),⽽不仅仅是简单的请求–响应模式。
本章将讨论 gRPC 应⽤程序的 4 种基础通信模式:⼀元 RPC、服务器端流 RPC、客户端流 RPC 以及双向流 RPC。在这个过程中,我们
会使⽤⼀些真实⽤例来展⽰每种模式,使⽤ gRPC IDL 进⾏服务定义,并使⽤Go 语⾔来实现服务和客户端。
第 4 章 gRPC 的底层原理;如果你是 gRPC ⾼级⽤户,并且对 gRPC 的底层原理感兴趣,那么可以通过这⼀章来学习这些知识。这⼀章讲述在服务器端和客户端之间进⾏ gRPC 通信的步骤以及如何通过⽹络实现。
本章将探索 gRPC 通信流的实现⽅式、所使⽤的编码技术以及 gRPC 中的底层⽹络通信技术的使⽤⽅法等,介绍涉及客户端调⽤给定RPC 的消息流,并探讨其他相关问题,包括如何将其编排为⽹络上的 gRPC 调⽤、如何使⽤⽹络通信协议、如何在服务器端解排,以及如何调⽤对应的服务和远程函数等。
另外,本章将 protocol buffers 作为 gRPC 的编码技术,将 HTTP/2 作为gRPC 的通信协议,并介绍它们的实现⽅法,最后研究 gRPC 实现架构以及围绕它所构建的语⾔⽀持栈。尽管对⼤多数 gRPC 应⽤程序来说,这⾥要讨论的底层细节作⽤有限,但在设计复杂的 gRPC
应⽤程序或设法调试现有的应⽤程序时,理解底层通信细节很有帮助。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。