写点什么

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

评论

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

网络攻防学习笔记 Day72

穿过生命散发芬芳

网络攻防 7月日更

什么是统一语言?

escray

学习 极客时间 6月日更 7月日更 如何落地业务建模

初探 Redis 客户端 Lettuce:真香

白亦杨

Java redis

Ansible Role

耳东@Erdong

ansible 7月日更 ansible role

柯桥淘宝拼多多电商培训到兴德教育!

Geek_196d9f

区块链与AI、大数据等技术融合,将带来哪些产业变革?

CECBC

观天安门升旗纪要

穿过生命散发芬芳

摄影 游记 升旗

自建开发工具系列-Webkit内存动量监控UI(四)

Tim

UI JSX

有人说SQL注入已经落后了,请问可以捶他吗???

网络安全学海

运维 网络安全 信息安全 渗透测试 SQL注入

软件开发的22条黄金法则

Zhendong

程序员 开发

百分点大数据技术团队:ClickHouse国家级项目性能优化实践

百分点大数据团队

linux服务器开发人员必须要彻底理解的关于【Linux】IO的线程模型

Linux服务器开发

reactor 网络编程 epoll Linux服务器开发 IO模型

云具匠心在宜宾 浪潮云亮相第二届中国国际智能终端产业发展大会

filecoin靠谱吗?filecoin合不合法?

Filecoin ipfs挖矿 fil挖矿

5G+工业互联网 智造驱动新发展

唯一网络

想学好编程,别背代码!

程序员鱼皮

Java Python 学习 大前端 计算机基础

从0到1:用脚做一个路由器漏洞实例

网络安全学海

运维 网络安全 信息安全 渗透测试· SQL注入

柯桥PS培训到兴德教育!零基础开始辅导!

Geek_196d9f

让AI抛弃“小作坊”,拥抱“工业化”:盘古大模型究竟是什么?

脑极体

Hologres揭秘:高性能原生加速MaxCompute核心原理

阿里云大数据AI技术

在数字经济领域实现更充分更高质量就业的思考

CECBC

这份面试笔记到底有什么魔力?可以使我斩获了8家大厂offer(Java岗)

Java架构师迁哥

给AI时代装配“新大脑”:数据密集型超算带来了哪些变革?

脑极体

欧洲杯上链,区块链语境下的数字化有什么不一样?

CECBC

5分钟速读之Rust权威指南(四十)高级trait

wzx

rust

免费分享Spring Boot开发的优秀图书

Java入门到架构

Java springboot

SPAC:海外造壳上市

石云升

上市 7月日更

如何加速应用网格化部署?看这款社交产品怎么做

阿里巴巴中间件

为什么要学习网络协议?

学无止境的阿奔

c++ Linux TCP/IP 网络通信协议 网络协议栈

Redisson 分布式锁源码 09:RedLock 红锁的故事

程序员小航

Java 源码 分布式锁 redisson 红锁

推荐系统的人工调控策略(三十五)

Databri_AI

人工智能 商业价值 推荐系统

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