写点什么

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

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

关注

评论

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

文心一言 VS 讯飞星火 VS chatgpt (76)-- 算法导论7.3 1题

福大大架构师每日一题

福大大架构师每日一题

商业智能工具 bi工具是什么,瓴羊Quick BI能给企业主带来哪些优势?

对不起该用户已成仙‖

ARTS 打卡第 6 天

自由

MySQL三个重要日志

数新网络官方账号

MySQL 数据库

锐炫无畏,助威亚运!英特尔锐炫显卡成为杭州亚运会官方指定图形处理器

E科讯

报表分析工具免费试用:瓴羊Quick BI带你快速解析数据

夜雨微澜

提速 40%,融云基于 QUIC 深度优化通信协议

融云 RongCloud

网络 协议 融云 QUIC 通讯

融云出海:两极分化的网红大户「拉美」如何出海制胜

融云 RongCloud

互联网 泛娱乐 出海 社交娱乐 社媒

更多openEuler镜像加入AWS Marketplace!

openEuler

Linux 操作系统 AWS openEuler

低代码平台技术分享官丨工作流应用场景之动态驳回

inBuilder低代码平台

【数据库原理 | MySQL】一文打通 DDL语句 - ARTS 打卡第 一 周

计算机魔术师

深度解读智能化编码的技术架构与实践案例

阿里云CloudImagine

云计算 编码 视频云

线上观看5万+,“芯”有灵“蜥”融合·创新!龙蜥社区走进 Intel MeetUp 回顾来了

OpenAnolis小助手

开源 芯片 intel Meetup 龙蜥社区

TDengine 3.1.0.0 版本成功发布,涉及五大板块功能更新!

TDengine

tdengine 时序数据库

如何落地复杂系统的架构治理?

码猿外

架构设计 软件架构治理

QT使用QML实现地图绘制虚线

芯动大师

Presto 设计与实现(一):开篇

冰心的小屋

数据湖 presto SQL引擎

从“智能涌现”到“价值涌现”,讯飞星火又一次“登月”

脑极体

讯飞

SpringBoot3集成ElasticSearch

Java elasticsearch 架构 springboot SpringBoot3

2022年移动游戏收入920亿美元,微信小游戏投放量增长五倍

没有用户名丶

电商订单履约-卖家发货演化史

得物技术

重构 业务架构 企业号 8 月 PK 榜 履约 业务身份

什么是业务敏捷,如何实现业务敏捷?

CODING DevOps

敏捷开发

【Python】一键查询依赖生成文件 requirements.txt

ReturnTmp

20. 异常处理

茶桁

Python 异常

探索YesPMP平台:您的一站式软件外包解决方案

知者如C

华为云联创营CTO领航班第八期:探索AI大模型的创新之路

新消费日报

SpringBoot单元测试实践——配置隔离篇

java易二三

Java 程序员 Spring Boot 计算机

什么是主数据管理?企业主数据管理方法论

优秀

主数据管理 主数据

融云:以对话为场景本质,AIGC 将如何改变游戏规则

融云 RongCloud

人工智能 AI 算法 AIGC 通讯

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