新书上市 | 6岁的gRPC,终于出书了!
gRPC是由谷歌开源的高性能远程过程调用框架。再过十几天,它就满6岁了。虽然gRPC的采用率正呈指数级增长,但中文领域一直没有一本综合介绍该技术的实体书。现在,这种尴尬局面终于被打破了!
新 书 上 市
卡山·因德拉西里 丹尼什·库鲁普 著
张卫滨 译
在介绍这本书之前,我们先来聊聊gRPC是怎样的一个存在,以及为什么值得选择它。
0
gRPC的应用场景
以在线零售系统为例,这类系统可能由多个分布式应用程序组成,如订单管理应用程序、商品目录应用程序和数据库等。为了实现在线零售业务功能,这些分布式应用程序需要相互连接和通信。
随着微服务架构和云原生架构的出现,为多种业务功能构建的传统软件系统被进一步拆分为一组细粒度、自治和面向业务能力的实体,也就是微服务。
基于微服务的软件系统需要借助进程间(服务间)通信技术,将各个微服务通过网络连接起来。
比如,对于采用微服务架构的在线零售系统,我们会发现它有多个互相连接的微服务,如订单管理、搜索、结账、配送等。
gRPC非常适合构建高可扩展、低延迟的分布式系统和微服务。它比传统的RESTful服务更高效、更快速。
1
优点一:极速
与采用文本格式的JSON相比,采用二进制格式的protobuf在速度上可以达到前者的5倍!Auth0网站所做的性能测试结果显示,protobuf和JSON的优势差异在Java、Python等环境中尤为明显。下图是Auth0在两个Spring Boot应用程序间所做的对比测试结果。
Auth0网站做的protobuf和JSON对比测试结果
结果显示,protobuf所需的请求时间最多只有JSON的20%左右,即速度是其5倍!
2
优点二:使用HTTP/2
-
二进制传输 -
多路复用,即可以在一个TCP连接上并行发送多个数据请求 -
双向同时通信,即可以同时发送客户端请求和服务器端响应 -
头部压缩技术,降低网络使用率
3
优点三:多语言支持、社区活跃
Go
Java
C#
C++
Dart
Kotlin/JVM
Node
Objective-C
PHP
Python
Ruby
这正是《gRPC与云原生应用开发》作者选用Go和Java来介绍该技术的原因。书中的所有示例都提供了Go和Java两种实现。
无论是只想初探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构建真正的应用程序时,这些项目都很有用。
留 言 福 利
你知道gRPC的g代表什么吗?
请在留言区畅所欲言。点赞数最高的读者,可获得《gRPC与云原生应用开发:以Go和Java为例》纸书1本。
统计截止时间:2021年2月12日 下午2点
提示:g is NOT for Google。:)
图灵君提前祝大家新年快乐!
参考文献:
https://auth0.com/blog/beating-json-performance-with-protobuf/
https://docs.microsoft.com/en-us/dotnet/architecture/cloud-native/grpc
https://grpc.io/docs/languages/