前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC

谷歌发布的首款基于HTTP/2和protobuf的RPC框架:GRPC

作者头像
张善友
发布2018-01-31 12:30:42
1.2K0
发布2018-01-31 12:30:42
举报
文章被收录于专栏:张善友的专栏张善友的专栏

Google 刚刚开源了grpc,  一个基于HTTP2 和 Protobuf 的高性能、开源、通用的RPC框架。Protobuf 本身虽然提供了RPC  的定义语法,但是一直以来,Google 只开源了Protobuf 序列化反序列化的代码,而没有开源RPC 的实现,于是存在着众多良莠不齐的第三方RPC 实现,不过我在项目中采用WCF搭配Protobuf是一个很不错的RPC实现,Google这个框架是是基于HTTP2的,这是他有特色的地方,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

从实现和特性看来,grpc 更多的是考虑移动场景情况下客户端和服务端的通信,正如其自称的「general RPC framework that puts mobile and HTTP/2 first」。HTTP2 本身提供了连接多路复用、Body 和 Header 压缩等机制,grpc 基于此可以提供比较高效的实现。目前Firefox、Chrome、Safari、Opera、iOS版Safari、Android版Chrome、Windows 8上的IE 11都已经支持HTTP/2,Windows 10预览版自带的浏览器也支持它。Apache、Windows 10上的IIS和Nginx都已经实现了SPDY 3.1或4(这就是HTTP/2),剩下的工作就是网站管理员们去升级服务器软件了。

grpc 所使用的依赖都比较新,如protbuf 需要3.0 版本, c++ 使用了c++11, Java 实现中的netty 需要5.0  版本, HTTP2 也是刚刚定稿。现阶段官方支持C++、JAVA、Python等三种编程语言,并以c 共享库的方式来支持Node.js, Python, Ruby, Objective-C, PHP 和 C# 语言 (由此看来,c++, Java 和golang 在Google 有着一等公民的地位)。其中Java 语言的实现亦可以用于Android 客户端,Objective-C 的实现主要针对IOS 客户端。

重点看了一下C# 的实现(https://github.com/grpc/grpc/tree/master/src/csharp ),目前代码只能在Mono下运行,主要是windows下的GRPC C core库的P/Invoke包装还没有完成,这里也可以看出Google的主要开发环境是Linux,对Mono的支持还不错,这点对同样是互联网公司国内同行很有借鉴意义。

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2015-02-27 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档