gRPC是由谷歌开源的高性能远程过程调用框架。再过十几天,它就满6岁了。虽然gRPC的采用率正呈指数级增长,但中文领域一直没有一本综合介绍该技术的实体书。现在,这种尴尬局面终于被打破了!

新 书 上 市


卡山·因德拉西里 丹尼什·库鲁普 著
张卫滨 译

在介绍这本书之前,我们先来聊聊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构建真正的应用程序时,这些项目都很有用。

留 言 福 利

你知道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/

图 灵 社 群

新书上市 | 6岁的gRPC,终于出书了!相关推荐

  1. 张磊大神的《深入剖析Kubernetes》终于出书啦!

    张磊出书啦 随着以 Kubernetes 为核心的云原生技术体系的逐渐成熟,开发一个媲美 CloudFoundry 这样的企业级 PaaS 不再是大公司的专利,也成了每个小团队甚至个人触手可及的目标. ...

  2. 新书上市 | 为什么你的英语总是学不好?

    本文选自<如何科学学外语>前言部分内容,作者:[日] 白井恭弘. 大部分人从初中.高中直至大学花费了大量时间和精力学习英语,但最终能学以致用的人却屈指可数.一些人虽然从未去英语国家留学,却 ...

  3. 阿韦的2018年总结:我终于要出书了 | 掘金年度征文

    大家好,我是阿韦,去年开始入驻掘金平台,在这里感觉到一股强烈的技术氛围,也学到了不少干货.跟各位大佬相比,我在掘金平台算是萌新了.掘金平台质量不错.首先感谢掘金平台,在这里发布博客能够吸引众多志同道合 ...

  4. 喜大普奔!Django官方文档终于出中文版了

    喜大普奔!Django官方文档终于出中文版了 文章来源:企鹅号 - Crossin的编程教室 昨天经 Sur 同学告知才发现,Django 官方文档居然支持中文了! 之所以让我觉得惊喜与意外,是因为: ...

  5. python编程从入门到实战的16堂课_好评如潮,百万Python程序员的「案头必备书」,终于出配套习题解答了!...

    原标题:好评如潮,百万Python程序员的「案头必备书」,终于出配套习题解答了! 据SlashData统计,截止到2020年3月世界上超过840万使用Python编写代码的开发人员.机器学习的兴起是P ...

  6. python程序员收入-令人羡慕!33岁程序员晒出收入和待遇,网友望尘莫及

    程序员是个技术活,一般来说工资都很高,但是也很辛苦,加班什么的是常事.程序员这个职业也很吃香,因为现在不管是什么行业,都会涉及到软件开发的工作,即使是传统行业也不例外.程序员不再是互联网公司才有的了, ...

  7. 从CSDN博客到出书,我的新书《SQL编程思想》是这样诞生的

    大家好,我是只谈技术不剪发的 Tony 老师. 历时一年多,我的新书<SQL编程思想>终于发售了! 这一切还得从 CSDN 博客说起,我是 2007-03-05 加入 CSDN,已经快 1 ...

  8. 35岁被大厂踢出豪门,褪去这层皮你还剩什么

    很多人 他们在大厂里边混得很好 他们大厂里边这个位置很高 但是突然有一天 晋升不上去了 领导空降了 项目解散了 某一个东西调岗了 给他打击很大准备跳槽. 别到那一天, 这是一个常态. 这个忽然有一天, ...

  9. python程序员辛苦吗-令人羡慕!33岁程序员晒出收入和待遇,网友望尘莫及

    程序员是个技术活,一般来说工资都很高,但是也很辛苦,加班什么的是常事.程序员这个职业也很吃香,因为现在不管是什么行业,都会涉及到软件开发的工作,即使是传统行业也不例外.程序员不再是互联网公司才有的了, ...

最新文章

  1. WordCount结对拓展
  2. 实时监测tcp链接状态_终于搞懂了 TCP 的 11 种状态,太不容易了…
  3. linux sed在容器中怎么用,概述LFCS 基础之sed用法
  4. OpenGL之3D数学的向量和矩阵
  5. python中常见的流程_Python面试中最常见的25个问题-结束
  6. AliOS Things 电源管理框架使用说明
  7. 计算机大学生个人特长范文,计算机大学生个人简历范文
  8. 搬砖的也能学Python----if - elif 语句
  9. QTCreator快捷键
  10. 大数据应用需要注意什么问题
  11. opencv-contrib sfm扩展模块下载安装
  12. 抖音昵称html,抖音个性网名带特殊符号 带漂亮符号的抖音昵称
  13. 5G+如何改变社会--读书有感
  14. debian adsl上网
  15. shell 下 时间 的傻狍子
  16. 三种方法绘制单位圆-R语言
  17. canvas动画:黑客帝国_使用Canvas API进行动画处理-第3部分:重力和动态渲染
  18. 渗透测试-Kali虚拟机技术
  19. 2019年什么工作最有前景?互联网/IT行业职业方向大盘点!
  20. 唯美手绘美女 性感蝴蝶天使 仙女 金发女郎

热门文章

  1. 交换三个整数的值,并输出
  2. 【c语言】蓝桥杯算法提高 企业奖金发放
  3. latex 甘特图_[简004] 史上'最全最精简'Markdown语法-速览速用
  4. 5月第3周业务风控关注 |网信办公布整治教育类应用的成果 关闭“作业狗”等20余款应用...
  5. Java中常见数据结构Map之HashMap
  6. Vue.js 2.0 学习重点记录
  7. Java豆瓣电影爬虫——减少与数据库交互实现批量插入
  8. 计蒜客 挑战难题 爬楼梯
  9. Socket粘包问题
  10. window下实现在线预览功能