gRPC是由谷歌开源的高性能远程过程调用框架。虽然gRPC的采用率正呈指数级增长,但中文领域一直没有一本综合介绍该技术的实体书。gRPC: Up and Running: Building Cloud Native Applications with Go and Java 一书的出现打破了这种局面。在英文版出版不到一年之内,图灵也引入出版了中文版(译者为张卫滨老师),新书在春节之前刚上架!这也就是今天为大家推荐的《gRPC与云原生应用开发:以 Go 和 Java 为例》。
卡山·因德拉西里 丹尼什·库鲁普 著
张卫滨 译
在介绍这本书之前,我们先来聊聊 gRPC 是怎样的一个存在,以及为什么值得选择它。
2015 年 2 月 26 日,谷歌宣布开源 gRPC,并称其「基于公司多年的分布式系统构建经验」。自那之后,人们给 gRPC 贴上了许多漂亮的「标签」:极速、高性能、微服务间通信首选、多语言支持、双向流模式、protobuf、HTTP/2,等等。
0
gRPC 的应用场景
现代应用程序很少是孤立运行的,相反,它们通过网络连接在一起,并且以互相传递消息的方式进行通信。我们可以将现代软件系统视为分布式应用程序的集合,这些应用程序在不同的网络位置运行,并且运用不同的通信协议在彼此间传递消息。
以在线零售系统为例,这类系统可能由多个分布式应用程序组成,如订单管理应用程序、商品目录应用程序和数据库等。为了实现在线零售业务功能,这些分布式应用程序需要相互连接和通信。
随着微服务架构和云原生架构的出现,为多种业务功能构建的传统软件系统被进一步拆分为一组细粒度、自治和面向业务能力的实体,也就是微服务。
基于微服务的软件系统需要借助进程间(服务间)通信技术,将各个微服务通过网络连接起来。
比如,对于采用微服务架构的在线零售系统,我们会发现它有多个互相连接的微服务,如订单管理、搜索、结账、配送等。
gRPC 非常适合构建高可扩展、低延迟的分布式系统和微服务。它比传统的 RESTful 服务更高效、更快速。
1
优点一:极速
gRPC 使用 protocol buffers(以下简称 protobuf)作为数据序列化机制。protobuf 的特点是语言中立、平台无关、高可扩展,它可以序列化和反序列化结构化数据。
与采用文本格式的 JSON 相比,采用二进制格式的 protobuf 在速度上可以达到前者的 5 倍!Auth0 网站所做的性能测试结果显示,protobuf 和 JSON 的优势差异在 Java、Python 等环境中尤为明显。下图是 Auth0 在两个 Spring Boot 应用程序间所做的对比测试结果。
Auth0网站做的protobuf和JSON对比测试结果
结果显示,protobuf 所需的请求时间最多只有 JSON 的 20% 左右,即速度是其 5 倍!
2
优点二:使用HTTP/2
gRPC 使用 HTTP/2 作为传输协议。我们来看看 HTTP/2 与 HTTP/1.X 相比有何优势。
二进制传输
多路复用,即可以在一个 TCP 连接上并行发送多个数据请求
双向同时通信,即可以同时发送客户端请求和服务器端响应
头部压缩技术,降低网络使用率
3
优点三:多语言支持、社区活跃
目前,gRPC 支持 11 种语言,GitHub 项目总星数近 6 万,其中 Go 实现和 Java 实现的星数最多。
Go
Java
C#
C++
Dart
Kotlin/JVM
Node
Objective-C
PHP
Python
Ruby
这正是《gRPC与云原生应用开发》作者选用 Go 和 Java 来介绍该技术的原因。书中的所有示例都提供了Go 和 Java 两种实现。
两位作者认为,随着 gRPC 的采用率不断增长,开发人员需要一本全面介绍该技术的书,能够将其作为终极指南应用于 gRPC 应用程序开发周期的各个阶段。以下是本书的目录:
目录 / 左右滑动查看
无论是只想初探 gRPC,还是想为自己的项目寻找新方案,你都能从这本易读的入门指南中有所收获。以下是内容概要。
第 1 章 gRPC 入门
你将了解 gRPC 的基础知识,并将它与 REST、GraphQL 和其他 RPC 技术等类似的进程间通信风格进行对比。
第 2 章 开始使用 gRPC
你将初次体验使用 Go 或 Java 构建完整的 gRPC 应用程序。
第 3 章 gRPC 的通信模式
你将使用真实的示例探索 gRPC 的通信模式,包括一元 RPC 模式、服务器端流 RPC 模式、客户端流 RPC 模式、双向流 RPC 模式。
第 4 章 gRPC 的底层原理
如果你是 gRPC 高级用户,并且对 gRPC 的底层原理感兴趣,那么可以通过这一章来学习这些知识。
第 5 章 超越基础知识
讲述 gRPC 的一些非常重要的高级特性,如拦截器、截止时间、元数据、多路复用、负载均衡等。
第 6 章 安全的 gRPC
你将全面理解如何保护通信通道、如何认证以及如何控制用户对 gRPC 应用程序的访问。
第 7 章 在生产环境中运行 gRPC
你将了解 gRPC 应用程序的整个开发生命周期。内容涵盖测试 gRPC 应用程序、与 CI/CD 集成、在 Docker 和 Kubernetes 上部署与运行。
第 8 章 gRPC 的生态系统
你将了解围绕 gRPC 所构建的有用的支撑组件。在使用 gRPC 构建真正的应用程序时,这些项目都很有用。
送书规则
评论中点赞最多的两位 Gopher 将获得这本书,最终截止日期本周日。