50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

  • 2016-09-04
  • 本文字数:1677 字

    阅读完需:约 6 分钟

一直以来,构建一个高度可扩展且松耦合的系统是很困难的。来自 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 )关注我们。

2016-09-04 19:005661

评论

发布
暂无评论
发现更多内容

就是简单,全球100多万读者,一起跑通前端HTML5与CSS3知识!

图灵教育

大前端 HTML5, CSS3

月薪3万的大厂测试工程师裸辞3个月,送外卖谋生背后的真实感悟

六十七点五

程序员 程序人生 软件测试 软件自动化测试 测试工程师

极光笔记丨关于数据大屏一比一还原设计稿这件事

极光GPTBots-极光推送

大前端 数据可视化

首次!统一调度系统规模化落地,全面支撑阿里巴巴双 11 全业务

阿里巴巴中间件

阿里云 云原生 中间件 双十一 统一调度

我是一个程序员,总想引导亲朋好友走上编程的伟大航路......

图灵教育

程序员 App Inventor

手把手教你学Dapr - 2. 必须知道的概念

MASA技术团队

C# .net 微软 后端 dapr

拥抱智能,AI 视频编码技术的新探索

阿里云CloudImagine

阿里云 视频编码 机器视觉 视频编解码 视频云

前端的状态管理与时间旅行:San实践篇

百度开发者中心

大前端 san san-store 技术实践

uni-app技术分享| 10分钟实现一个简易uniapp视频通话

anyRTC开发者

uni-app 音视频 WebRTC 实时通信 视频通话

一招教你通过焱融 SaaS 数据服务平台+ELK 让日志帮你做决策

焱融科技

云计算 分布式 SaaS 公有云 文件存储

千万级学生管理系统的考试试卷存储方案

Steven

架构实战营

河南等保测评公司都有哪几家?都在哪里?

行云管家

网络安全 信息安全 数据安全 等级保护

【高并发】通过ThreadPoolExecutor类的源码深度解析线程池执行任务的核心流程

冰河

Java 并发编程 多线程 高并发 异步编程

模块三作业——外包学生管理系统架构设计

覃飞

Python代码阅读(第58篇):压缩列表

Felix

Python 编程 列表 阅读代码 Python初学者

企业如何选择合适的低代码平台?这6点不得不考虑!

J2PaaS低代码平台

低代码 低代码开发 低代码平台 企业数字化

我所理解的社群—社群本质

sec01张云龙

社群 11月日更 社群运营

LevelDB Java&Go实践

FunTester

Java 自学 Go 语言 leveldb FunTester

Vue项目优化打包——前端加分项

CRMEB

混合云的概念以及优势劣势简单介绍-行云管家

行云管家

云计算 混合云 多云 云管平台

短视频个性化Push工程精进之路

百度Geek说

后端 软件架构

CSS布局之display:flex(二)

Augus

CSS 11月日更

Nebula Graph 源码解读系列 | Vol.04 基于 RBO 的 Optimizer 实现

NebulaGraph

图数据库 源码解读

不要再重复造轮子了,Hutool这款开源工具类库贼好使

沉默王二

Java

速来!开源中国首届飞算SoFlu组件开发悬赏赛来袭

飞算JavaAI开发助手

Java

令人不悦的–requests.exceptions.ProxyError

老表

Python Error 11月日更 ProxyError

彻底搞懂Spring状态机原理,实现订单与物流解耦

Tom弹架构

项目管理常见问题系列(1)—资源不足

一叶而不知秋

项目管理

第一本 Compose 图书上市,联想大咖教你学会 Android 全新 UI 编程

图灵教育

Compose AndroidUI

手把手教你学Dapr - 1. .Net开发者的大时代

MASA技术团队

C# .net 微软 后端 dapr

gRPC1.0发布,来自Google的RPC框架_语言 & 开发_禚娴静_InfoQ精选文章