BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

gRPC:Google开源的基于HTTP/2和ProtoBuf的通用RPC框架

| 作者 李小兵 关注 0 他的粉丝 发布于 2015年3月3日. 估计阅读时间: 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.jsPythonRubyObjective-CPHPC#等语言,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)关注我们,并与我们的编辑和其他读者朋友交流。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

很给力 by 郑 洋飞

Google在网络,性能方面真的耕耘很深入,而我们却太多时候在针对业务。

这是一个新的 高质量的轮子! by lee jeff

现在看来 , “不要重复发明轮子” 前面还有一句 : “没有金刚转,就别揽瓷器活”

这个是在http层通信的吗? by z zz

基于http/2的意思是不是不在tcp层,而是在http层进行通信?

没有hprose好用 by 马 秉尧

grpc用起来超麻烦,没有hprose用起来简单直接,支持的语言和平台也比hprose少的多。

Re: 这个是在http层通信的吗? by Tang Zhihui

应用层

Re: 这个是在http层通信的吗? by wier wier

http是应用层,http再上天也得基于传输层来传数据啊

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

6 讨论

深度内容

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT