写点什么

gRPC:Google 开源的基于 HTTP/2 和 ProtoBuf 的通用 RPC 框架

  • 2015-03-02
  • 本文字数:1209 字

    阅读完需:约 4 分钟

gRPC 是一个高性能、通用的开源 RPC 框架,其由 Google 主要面向移动应用开发并基于 HTTP/2 协议标准而设计,基于 ProtoBuf (Protocol Buffers) 序列化协议开发,且支持众多开发语言。gRPC 提供了一种简单的方法来精确地定义服务和为 iOS、Android 和后台支持服务自动生成可靠性很强的客户端功能库。客户端充分利用高级流和链接功能,从而有助于节省带宽、降低的 TCP 链接次数、节省 CPU 使用、和电池寿命。

gRPC 具有以下重要特征:

  • 强大的 IDL 特性
    gRPC 使用 ProtoBuf 来定义服务,ProtoBuf 是由 Google 开发的一种数据序列化协议(类似于 XML、JSON、hessian)。ProtoBuf 能够将数据进行序列化,并广泛应用在数据存储、通信协议等方面。不过,当前 gRPC 仅支持 Protobuf ,且不支持在浏览器中使用。由于 gRPC 的设计能够支持支持多种数据格式,所以读者能够很容易实现对其他数据格式(如 XML、JSON 等)的支持。

    定义服务的示例代码如下:

复制代码
message HelloRequest {
string greeting = 1;
}
message HelloResponse {
string reply = 1;
}
service HelloService {
rpc SayHello(HelloRequest) returns (HelloResponse);
}
  • 支持多种语言
    gRPC 支持多种语言,并能够基于语言自动生成客户端和服务端功能库。目前,在 GitHub 上已提供了 C 版本 grpc 、Java 版本 grpc-java 和 Go 版本 grpc-go ,其它语言的版本正在积极开发中,其中 grpc 支持 C、 C++ Node.js Python Ruby Objective-C PHP C#等语言,grpc-java 已经支持 Android 开发。
  • 基于 HTTP/2 标准设计
    由于 gRPC 基于 HTTP/2 标准设计,所以相对于其他 RPC 框架,gRPC 带来了更多强大功能,如双向流、头部压缩、多复用请求等。这些功能给移动设备带来重大益处,如节省带宽、降低 TCP 链接次数、节省 CPU 使用和延长电池寿命等。同时,gRPC 还能够提高了云端服务和 Web 应用的性能。gRPC 既能够在客户端应用,也能够在服务器端应用,从而以透明的方式实现客户端和服务器端的通信和简化通信系统的构建。

gRPC 已经应用在 Google 的云服务和对外提供的 API 中,其主要应用场景如下:

  • 低延迟、高扩展性、分布式的系统
  • 同云服务器进行通信的移动应用客户端
  • 设计语言独立、高效、精确的新协议
  • 便于各方面扩展的分层设计,如认证、负载均衡、日志记录、监控等

近日,gRPC 开发团队宣布 gRPC 基于三条款BSD 许可协议(BSD 3-Clause License)开源,相关代码已托管在 GitHub 上。当前已有 Google 和移动支付公司 Square 以及其他组织或个人为该项目贡献代码。有兴趣的读者可以在 GitHub 选择需要的语言版本,并根据提供的 README 文档尝试 gRPC 的功能,或者参考 FAQ,以获得对 gRPC 更多信息。此外,在 gRPC-common 仓库中,还提供了例子、快速入门指南等相关文档。


感谢郭蕾对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。

2015-03-02 00:2980121
用户头像

发布了 46 篇内容, 共 53.1 次阅读, 收获喜欢 15 次。

关注

评论

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

内网升级“高效安全”利器!统信软件发布私有化更新管理平台

统信软件

安全 操作系统

IM开发者的零基础通信技术入门(十一):为什么WiFi信号差?一文即懂!

JackJiang

即时通信 即时通讯IM

Lion : 超越 AdamW 的优化算法

Zilliz

模型训练 算法优化

智能化司库平台助力财资管理升级

用友BIP

用友 智能会计 智能财务 价值财务 全球司库

旅游景区智慧公厕,提升旅游新体验

光明源智慧厕所

怎样仿真才能驱动研发

Openlab_cosmoplat

工业互联网 开源社区 工业 仿真 仿真软件

ChatGPT编程秀-1:从一个爬虫开始

仝键

JavaScript 架构 TDD java ChatGPT

“巨变”中,用友奋力实现飞跃

用友BIP

用友BIP

好用的3D建筑设计软件:Vectorworks 2023激活版

真大的脸盆

Mac Mac 软件 3D建筑设计软件 建筑设计

从 TDengine 存储引擎的变化探讨——为何大家应尽快切换 3.0 版本?

TDengine

tdengine 时序数据库 国产数据库

让业务容器化更安全便捷,阿里云容器镜像服务 ACR 推出免费制品中心

阿里巴巴中间件

阿里云 容器 云原生

天翼云斩获SD-WAN & SASE两项大奖!让企业上云更加丝滑

天翼云开发者社区

开源项目的演进会遇到哪些“坑”?KubeVela 从发起到晋级 CNCF 孵化的全程回顾

阿里巴巴中间件

阿里云 开源 云原生 KubeVela cncf

智能会计成就价值财务

用友BIP

智能会计 价值财务 业财合一 用友智能财务

持续创新,厚积薄发,用友引领企业数智化服务产业

用友BIP

用友 用友BIP

众筹互助模式DApp开发智能合约系统搭建

薇電13242772558

智能合约

牛皮!仅凭“阿里爸爸”大厂面试参考笔记,去携程Java三面,已OC

Java面试那些事儿

Java 编程 架构 面试 java面试

重塑大融合体系,立体推进“业财合一”

用友BIP

智能会计 价值财务 业财合一 用友智能财务 业财融合

天翼云坚持科技创新,加速算力普惠!

天翼云开发者社区

如何用秒验提升用户体验和转换率?

MobTech袤博科技

Airwallex 基于 Flink 打造实时风控系统

Apache Flink

大数据 flink 实时计算

数据库ChatGPT插件来了,SQL使用体验进一步起飞

第四范式开发者社区

人工智能 机器学习 数据库 开源 特征

从ChatGPT谈AI发展方向:全力助推乡村振兴事业快速发展

加入高科技仿生人

人工智能 AI 低代码 乡村振兴 ChatGPT

模块9设计电商秒杀系统

KING

高速服务区智慧公厕

光明源智慧厕所

时序数据库入门 | 时序数据库的特点及与传统数据库的区别详解

Greptime 格睿科技

时序数据库 tsdb 时序数据

SeaTunnel 与 StarRocks 生态融合,让大数据处理回归“简单”!

Apache SeaTunnel

开源 Bigdata Apache SeaTunnel

Kyligence 亮相 Gartner 数据与分析峰会,展示指标平台创新成果

Kyligence

大数据 数据分析 指标中台

为什么秒验是老年用户注册的最佳选择

MobTech袤博科技

共铸国云智领未来| 吹起“螺”号,构建数字化生态圈

天翼云开发者社区

再获信创认证!MIAOYUN荣获“产业技术创新奖”和“优秀信创企业奖”双重奖项

MIAOYUN

信创 信创云 MIAOYUN 产业技术创新奖 优秀信创企业奖

gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架_Google_李小兵_InfoQ精选文章