写点什么

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

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

关注

评论

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

PD虚拟机必备工具箱!Parallels Toolbox 7 让日常任务变得超简单!实用工具一键搞定!

Rose

裁判文书网转“内参”,法律检索如何预测裁判结果

科技汇

Native Instruments Super 8 R2 for mac (软件合成器插件)

Rose

MyEMS 在行业中的应用与优势剖析

开源能源管理系统

开源 能源管理 绿色生产

Maxon Cinema 4D S24(附c4d安装教程) 中文特别版

Rose

接入且慢MCP,如何3分钟生成专属的财务诊断和投资规划报告

盈米AI开放平台

Golang 语言连接并操作 KWDB 数据库

KaiwuDB

数据库 KaiwuDB

HarmonyOS免密认证方案 助力应用登录安全升级

HarmonyOS SDK

HarmonyOS NEXT harmoyos HarmonyOS SDK应用服务

某互联网大厂又要裁员近一万人!

王中阳Go

Go 裁员 大厂

WinZip for Mac 轻松压缩、保护、共享和管理您的文件

Rose

GreatSQL通过伪装从库回放Binlog文件

GreatSQL

WebGL 开发数字孪生的技术框架

北京木奇移动技术有限公司

软件外包公司 数字孪生开发 webgl开发

KWDB数据库高可用方案验证与测试

KaiwuDB

数据库 KaiwuDB

vec2text 技术已开源!一定条件下,文本嵌入向量可“近乎完美地”还原

Baihai IDP

程序员 AI 向量数据库 rag 检索增强生成

如在测试框架中实现数据驱动测试? 在测试框架中实现测试套件?

测试人

Modbus TCP 协议电表与能源数据可视化应用详解

开源能源管理系统

开源 能源管理 Modbus Tcp 电表

老实人做的数据库产品,好像也不“老实” !

KaiwuDB

数据库 KaiwuDB

Loopback for Mac 为您提供高端演播室混音板的强大功能

Rose

百汇通公会健康产业遇上数字金融,一场商业生态的革新

科技汇

昆仑万维再次开源奖励模型,Skywork-Reward-V2在七大主流奖励模型评测榜单中全面夺魁

新消费日报

AE插件-人工智能视频扭曲跟踪合成插件 Neural Warp for Mac

Rose

做制造业,那你不能不懂ERP 的五大生产模式!

积木链小链

数字化转型 ERP 智能制造 生产模式

开发者必备!Navicat for SQLServer 提供智能查询、ER 图表、数据迁移!

Rose

哪里有CorelDRAW最新序列号?cdr2024 Mac最新序列号及安装教程分享

Rose

After Effects 2025 中文汉化安装教程 附AE2025激活补丁最新版

Rose

AI 英语教育 App 的技术方案

北京木奇移动技术有限公司

AI技术开发 软件外包公司 AI英语学习

从开放生态到技术破局,昇腾CANN筑实AI时代的创新基座

极客天地

新一代机械加工行业智能化MES:智能排产+质量追溯+设备互联

万界星空科技

mes 万界星空科技mes 机械加工行业 机械加工mes 制造业转型

WebGL开发数字孪生项目

北京木奇移动技术有限公司

软件外包公司 数字孪生开发 webgl开发

权威认可!天翼云强势入选IDC中国CNAPP领导者象限!

天翼云开发者社区

云原生 天翼云

Dragonfly 发布 2.3 版本,新增持久化缓存、资源搜索及 Vortex 协议等新特性

蚂蚁开源

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