BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

gRPC1.0发布,来自Google的RPC框架

| 作者 禚娴静 关注 0 他的粉丝 发布于 2016年9月5日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

一直以来,构建一个高度可扩展且松耦合的系统是很困难的。来自Google的gRPC框架致力于解决这个领域问题。它自去年面世以来收到了社区的大量关注和使用。8月23日Google正式发布了gRPC的1.0版本,并可用于生产。在此次发布中增加了新版本对多语言的支持、API稳定性等,引起了社区广泛的关注。

gRPC是一个高性能、开源、通用的RPC框架,它基于Proto Buffers进行数据序列化,并将移动和HTTP/2作为设计的首要考虑因素。与单一RPC请求方式不同,gRPC使用HTTP/2提供客户和服务器间的单向或双向流,同时可以带来流量控制、头部压缩、单TCP连接上的多复用请求等特性。Google认为gRPC以“利用带宽和CPU效率、低延迟的方式来创建大规模分布式系统,可以应用在数据中心、移动应用程序、实时通信、物联网设备和API等,且有很好的表现。”而微服务是gRPC的主要目标。

gRPC最早源于被称为Stubby的Google内部项目,用于一些Google内部服务间的通信。18个月前Google开源了gRPC框架,希望借此gRPC能被更广泛地采纳,并在调用Google所提供的服务时、通过互联网与其它服务通信时或在自身产品内部应用gRPC。

gRPC是与平台无关的RPC系统。如下图所示,gRPC允许开发人员编写语言无关的服务定义,指定远程调用参数和返回类型。服务器端实现服务定义,并运行一个gRPC服务器来处理客户的调用;而客户端则部署支持客户端调用的服务器端实现存根。这些代码都可由gRPC基于服务定义和自选的开发语言在编译器的帮助下自动生成。这使得客户端应用程序可以像调用本地对象一样调用服务器端应用程序,从而帮助开发人员更容易地创建分布式应用程序和服务。

同时,gRPC也可以帮助处理高效的网络通信、认证和访问控制(如SSL/TLS和OAuth2方式的认证)、分布式跟踪等问题。gRPC与Proto Buffers一起可以帮助实现松耦合、工程化的速度、更高的可靠性以及操作的易用性。这也是在过去的15年中,Google内部采用Stubby和RPC框架解决的问题。Google声称期望通过将这一框架开源给社区,让更多的组织和社区收益。

自2015年至今,我们也看到gRPC项目在很多方面的改进。这次1.0版本中主要包括以下几点:

  • 对多种语言绑定的支持,如C ++、Java、Go、Node、Ruby、Python和C#,并且可以跨Linux、Windows和Mac多种操作系统。
  • Objective-C和Android的Java库也在迁移到1.0版本,使移动应用能够更有效地连接到后端服务。
  • 在安装方面,gRPC支持以CocoaPods、gem、Gradle、Maven、npm、NuGet、pecl、pip或Docker镜像等方式提供的二进制文件,这大大简化了安装过程。在1.0版本中,增加了绝大多数语言单行安装、向后兼容性等的支持。
  • gRPC1.0依赖于Protocol Buffers最新版本3.0。

此外,gRPC1.0的核心协议和API在可用性、互操作性、性能等方面都有所提升。相对于文本格式而言,ProtoBuf方式可提供更优的性能。据Google工程师Kelsey Hightower介绍,ProtoBuf编码的消息比JSON格式消息的大小降低了一半,而序列化和反序列化所用的时间仅为后者的三分之一。为了显示各种gRPC实现的通信延迟情况对比,Google给出了在同一数据中心中不同虚拟机实例间的通信性能精要报告。对于单一的同步安全消息,报告显示作为基准的Netperf的延迟大约为100微秒,而C 、Java和C#语言实现的延迟大约在200到300微秒,Ruby、Python和Node.js语言实现的延迟分别在700微秒、900微秒和1,100微秒左右。

不得不说,gRPC1.0版本的发布标志着一个重要里程碑的诞生。与此同时,社区对于gRPC的兴趣迅速提升,同时随着像Netflix、CoreOS、 Square等公司和开源项目的使用,必然能够推动gRPC作为一个通用RPC框架的发展以及相关生态圈的成熟,从而使更多的组织和社区受益。

你可以在这里查阅1.0版本的更多发布细节。如果你感兴趣,不妨开始尝试gRPC并通过邮件列表来给予反馈。


感谢郭蕾对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

不错哦 by n yuxiao

在微服务的时代 仅仅只是rpc 略显尴尬了些

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT