gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架
来源:互联网 发布:mac os sierra 已下载 编辑:程序博客网 时间:2024/06/07 22:19
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仓库中,还提供了例子、快速入门指南等相关文档。
感谢郭蕾对本文的审校。
原文地址:http://www.infoq.com/cn/news/2015/03/grpc-google-http2-protobuf
- gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架
- 基于HTTP/2和protobuf的RPC框架GRPC
- 谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC
- google的RPC框架:grpc 介绍
- 集成libevent,google protobuf的RPC框架
- 集成libevent,google protobuf的RPC框架
- 基于protobuf的RPC实现
- 基于protobuf的RPC实现
- 基于protobuf的RPC实现
- 基于protobuf的RPC实现
- 基于protobuf的RPC实现
- 基于protobuf的RPC实现
- 基于protobuf的RPC实现
- 高效传输数据格式以及基于HTTP2的RPC框架---gRPC的使用
- google开源RPC框架gRPC:安装
- Google 开源 RPC 框架 gRPC 初探
- 【通信框架】Google的开源通信框架protobuf概述
- 【通信框架】Google的开源通信框架protobuf概述
- C++虚函数表解析
- Windows 10 新特性变化研究
- SMTP、POP3、IMAP
- libgcc_s_dw2.dll静态链接
- 电脑左边白屏
- gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架
- Cocos2d-x《雷电大战》(4)-策略模式实现不同子弹切换!!
- lapack参考网址
- Apple Watch平台认知与产品设计
- (第二次作业)习题5-8
- HBuilder离线打包教程
- Settings up PostgreSQL with Django on Mac OS
- mysql 可以根据查询结果插入到指定的表中
- createsamples.cpp中生成vec文件的实现及详细注释、图解——人脸识别的尝试系列(三)