在 2025 收官前,看清 Data + AI 的真实走向,点击查看 BUILD 大会精华版 了解详情
写点什么

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:005739

评论

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

微服务nacos默认开启鉴权JeecgBoot

JEECG低代码

微服务 nacos

STM32入门开发-详解GPIO口的配置与控制方式(以LED灯为例)

DS小龙哥

7月月更

有了小浣熊,办公数据分析不再愁

穿过生命散发芬芳

社区征文 办公小浣熊

紫光闪存京东品牌焕新日来袭!多重福利精彩放送

新消费日报

关于ComfyUI的一些Tips

不在线第一只蜗牛

人工智能 AI

扫描全能王AIGC“黑科技”亮相WAIC,《人民日报》、央视、新华社同时“点赞”

合合技术团队

人工智能 OCR AIGC

华为云助力徐州市城管局荣获数字城市赛道“百景新锐奖”

新消费日报

Apache IoTDB & TsFile 智慧能源应用“上会”啦!

Apache IoTDB

深入理解 Nginx 与 Kong 的配置与实践

左诗右码

Kong 网关

基于 Groq 和 Cartesia 的高速 AI 语音助手发布;xAI 将自行打造超级计算机丨 RTE 开发者日报

RTE开发者社区

【YashanDB知识库】YAS-02024 lock wait timeout, wait time 0 milliseconds

YashanDB

yashandb 崖山数据库

云原生NPM数据采集和指标计算方法

乘云数字DataBuff

云原生 npm

使用 Protobuf 实现高效数据交换

左诗右码

protobuf

数业智能亮相AI论坛,共探数字心理健康新领域

心大陆多智能体

智能体 AI大模型 心理健康 数字心理

唐刘:当 SaaS 爱上 TiDB(一)- 行业挑战与 TiDB 的应对之道

PingCAP

数据库 SaaS #TiDB 洞察 资源管控

平凯星辰黄东旭出席 2024 全球数字经济大会 · 开放原子开源数据库生态论坛

PingCAP

开源 金融行业 #TiDB 开放原子 平凯星辰

如何让大模型更聪明

蛙人族

大数据‘’ Data Center

从 Icelake 到 Iceberg Rust

Databend

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