首页 > 其他分享 >新书上市 | 6岁的gRPC,终于出书了!

新书上市 | 6岁的gRPC,终于出书了!

时间:2023-07-26 11:33:01浏览次数:48  
标签:Java protobuf gRPC 出书 应用程序 新书 Go HTTP


gRPC是由谷歌开源的高性能远程过程调用框架。再过十几天,它就满6岁了。虽然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应用程序间所做的对比测试结果。

新书上市 | 6岁的gRPC,终于出书了!_人工智能_02

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,还是想为自己的项目寻找新方案,你都能从这本易读的入门指南中有所收获。以下是内容概要。

新书上市 | 6岁的gRPC,终于出书了!_网络_03

第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,终于出书了!_python_04

标签:Java,protobuf,gRPC,出书,应用程序,新书,Go,HTTP
From: https://blog.51cto.com/u_15767091/6854805

相关文章

  • grpc编译+安装
     cd ./grpc/cmake/buildsudo rm -rf *cmake ../.. -DBUILD_SHARED_LIBS=ONmakesudo make installsudo ldconfig –v  fftw配置时,sop中的以下语句会报错,其中空格有不对的地方,使用以下语句即可:sudo ./configure --enable-type-prefix --prefix=/usr/local......
  • [nginx]反向代理grpc
    前言nginx从1.13.10版本开始提供对gRPC代理的支持。由于grpc基于http2,因此编译nginx时需要添加参数--with-http_v2_module来启用对http2协议的支持。常用配置应该是nginx1.25版本开始,声明http2的语法应该单独写,而不是写在listen中。listen80;http2on;基本配置http......
  • gRPC如何保障数据安全传输
    什么是gRPC?gRPC是由Google开发的高性能、开源的RPC(RemoteProcedureCall)框架,用于在客户端和服务器之间进行通信。它基于ProtocolBuffers(protobuf)进行消息序列化和反序列化,支持多种通信协议,如HTTP/2、TCP和gRPC提供的协议。gRPC的安全需求在现代网络环境中,数据的安......
  • Grpc C++使用总结
    Grpc一,安装安装依赖sudoapt-getinstallpkg-configsudoapt-getinstallautoconfautomakelibtoolmakeg++unzipsudoapt-getinstalllibgfalgs-devlibgtest-devsudoapt-getinstallclanglibc++-dev下载gRPCgitclonehttps://github.com/grpc/grpc.gitc......
  • gRPC
    gRPC的特征:基于HTTP/2,继而提供了连接多路复用、Body和Header压缩等机制。可以节省带宽、降低TCP链接次数、节省CPU使用和延长电池寿命等。支持主流开发语言(C,C++,Python,PHP,Ruby,NodeJS,C#,Objective-C、Golang、Java)IDL(InterfaceDefinitionLanguage)层使用了......
  • golang GRPC example
    REF:  GolanggRPCExampleGoinstallationweshouldbetterbuildinagolangcontainer https://go.dev/doc/install#https://go.dev/dl/go1.20.2.linux-amd64.tar.gzwgethttps://go.dev/dl/go1.20.2.linux-amd64.tar.gz#wgethttps://golang.org/dl/go1.18.li......
  • 在 Go gRPC 中传递额外参数
    GogRPC是一个高性能、开源的RPC框架,它支持通过ProtocolBuffers进行序列化和反序列化,提供了简单易用的API,并且可以跨语言通信。在实际开发中,我们有时需要在gRPC方法之间传递一些额外的参数,例如请求头信息、跟踪ID、取消信号等。本文将介绍在GogRPC中如何传递这些额外......
  • go演示GRPC的用法
    首先,需要确保已经安装了Go编程语言和gRPC库。可以使用以下命令安装gRPC库:goget-ugoogle.golang.org/grpc下面是一个基本的gRPC示例,其中包括服务器端和客户端。示例演示了一个简单的计算器服务,客户端可以发送两个数字给服务器,然后服务器返回它们的和。首先,我们将定义一个.pr......
  • gRPC
    一、protobufgRPC传输用这个挺好的,跨语言调用足够简单序列化后体积小解析速度比XML块多语言支持兼容性好proto3这里就先不提proto2了文件后缀名是.proto1.开始部分syntax="proto3";//compileisproto3//生成的文件是处在哪个目录哪个包中,.代表在当前目录生......
  • 新书上市 | 数学不好,Python不行,还能入门机器学习吗?
    没错,图灵君又来安利好书了!什么书?机器学习?机器学习的书已经很多了,这本有啥特别的吗?当然有。话说有位日本网友,买了40多本数学和机器学习相关的书,愣是没有学会,直到遇到了这本,那叫一个相见恨晚呐!嗯,你没猜错,就是一本引进日本的书。图灵的老朋友都知道,我们出版了很多日系好书,比如用图搞定......