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

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:2980487
用户头像

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

关注

评论

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

华为云CDN,用技术实力助力企业创新,促进产业化转型

IT科技苏辞

javascript 高级编程 之 Array 用法总结

hellocoder2029

JavaScript

太厉害了!GitHub上标星80K的微服务实战笔记,看完跪了

小二,上酒上酒

Java 微服务

阿里架构师耗时三个月整理的 Spring实战笔记:入门到实战

小二,上酒上酒

spring

京东T8架构师墙裂推荐:史上最全高性能MySQL实战(赶紧收藏)

小二,上酒上酒

Nodejs相关ORM框架分析

coder2028

node.js

华为云ECS,弹性云服务器标杆,众多企业的共同选择

爱尚科技

华为云ECS,去除现代化企业服务器的数据安全忧虑

爱尚科技

清华年薪百万大佬,带你深入JVM实战调优,看完还敢说你懂JVM

小二,上酒上酒

Java 马士兵

华为云CDN,是怎样满足各行业全场景加速需求

IT科技苏辞

一站式全覆盖数据 I/O 平台 - Alluxio 与 Aunalytics 的完美结合

Alluxio

分布式 presto Alluxio 大数据 开源 #开源

员工离职率高如何解决?

优秀

企业管理 员工离职

企业为什么需要UI快速开发框架

力软低代码开发平台

特征平台在数禾的建设与应用

阿里云大数据AI技术

sql 大数据 flink 企业号十月 PK 榜

js通过经纬度来计算两地之间的距离

源字节1号

微信小程序 软件开发 前端开发 后端开发

华为云ECS,弹性伸缩按需选择,让企业以更低成本享受云服务

爱尚科技

来了!Spring Boot从入门到入土的私藏教程,不收藏你就亏了

小二,上酒上酒

spring springboot

京东T8连夜肝出的《JVM性能优化知识点》吊打所有提问的面试官

小二,上酒上酒

性能优化 JVM Java虚拟机

Webpack完整打包流程分析

Geek_02d948

webpack

华为云ECS,如何助力数字化企业创新发展

爱尚科技

【文本检测与识别白皮书-3.2】第一节: 基于分割的场景文本识别方法

合合技术团队

人工智能 文字识别 文字检测 智能识别

Webpack中的高级特性

Geek_02d948

webpack

融云一站式「云市场」上线,携手生态伙伴,共建价值平台

融云 RongCloud

通讯协议 市场 CND

太厉害了!阿里年薪120W架构师整理的学习笔记,看完收获良多

小二,上酒上酒

Java 架构 微服务 高并发

华为云CDN,海量资源智能路由,让内容传输更快一步

IT科技苏辞

将 NGINX 部署为 API 网关,第 3 部分:发布 gRPC 服务

NGINX开源社区

nginx api 网关 gprc

Nodejs:ESModule和commonjs,傻傻分不清

coder2028

node.js

腾讯T4耗时36天整理出了:多线程+JVM+设计模式+Redis+MySQL

小二,上酒上酒

MySQL redis JVM 多线程

javascript尾递归优化

hellocoder2029

JavaScript

重塑感知,荣耀金洋,银行APP用户体验外滩峰会相聚上海

易观分析

银行 峰会 上海

阿里技术专家压箱底好货:Redis深度历险笔记

小小怪下士

Java redis 程序员

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