写点什么

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

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

关注

评论

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

增长方法论:五步验证法

石云升

产品经理 28天写作 产品增长 12月日更

【Redis核心原理专题】(1)「技术提升系列」分析探究如何实现LFU的热点key发现机制以及内部的Scan扫描技术的原理

码界西柚

redis 12月日更 Redis Scan Redis 热点key Redis服务

云原生新边缘:火山引擎边缘计算最佳实践

火山引擎边缘云

云计算 云原生 边缘计算

实现macOS热门功能,我只用了60行代码!

Jackpop

Hystrix Dashboard

李子捌

微服务 28天写作 12月日更

链路分析 K.O “五大经典问题”

阿里巴巴云原生

负载均衡 阿里云 云原生 流量 链路分析

Holos: 我来了,我是个大块头。

mtfelix

28天写作

【架构师训练营】模块二作业

樰巳-堕~Horry

架构实战营 「架构实战营」

5分钟认识802.11标准,言简意赅!

Ethereal

网络技术 无线技术 网络技术联盟站 802.11

帮你积累音视频知识,Agora 开发者漫游指南正式启航

声网

人工智能 音视频

CSS之选择器(八):+ 和 ~

Augus

CSS 12月日更

Hoo虎符研究院 | 币海寻珠——近期公链事件(2021.12.16)

区块链前沿News

Hoo虎符 虎符交易所

阿里云分布式容器平台即将全面启动公测!

阿里巴巴云原生

阿里云 容器 分布式 云原生

从 “香农熵” 到 “告警降噪” ,如何提升告警精度?

阿里巴巴云原生

阿里云 云原生 告警 可观测 信息熵

分析一下微信朋友圈的高性能复杂度

Sindorei

「架构实战营」

15.  《重学JAVA》--Lambda表达式

杨鹏Geek

Java 25 周年 28天写作 12月日更

电脑安全小知识

喀拉峻

黑客 网络安全 安全 计算机基础

LabVIEW软件、驱动安装及编程方法(理论篇—2)

不脱发的程序猿

机器视觉 LabVIEW 工业自动化

东数西算,风起中原

脑极体

解决问题

Nydia

架构模块二作业

Vincent

「架构实战营」

请回答,轻巧又见效的数字化转型,企业该如何做?

ToB行业头条

46 K8S之集群高可用

穿过生命散发芬芳

k8s 28天写作 12月日更

工业机器视觉系统的构成与开发过程(理论篇—1)

不脱发的程序猿

计算机视觉 机器视觉 图像处理 LabVIEW 工业自动化

读《思辨与立场》-04自我理解

wood

28天写作 批判性思维 思辨与立场

架构实战营 4 期 - 第2周作业

周念

「架构实战营」

低代码助推生物制药企业CDMO的“数字化转型”之路

优秀

低代码 制药企业CDMO

2021的科技卦象·震·到元宇宙玩“躲猫猫”

脑极体

2021年11月券商App行情刷新及交易体验评测报告

博睿数据

重磅|火山引擎边缘计算节点服务正式发布!

火山引擎边缘云

边缘计算 网络 云计算,

设计模式的提出

卢卡多多

28天写作 12月日更

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