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

标签: 谷歌 http protobuf | 发表时间:2016-03-16 16:24 | 作者:m635674608
出处:http://www.iteye.com

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的支持还不错,这点对同样是互联网公司国内同行很有借鉴意义。

 

http://www.cnblogs.com/shanyou/p/grpc.html



已有 0 人发表留言,猛击->> 这里<<-参与讨论


ITeye推荐



相关 [谷歌 http protobuf] 推荐:

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

- - 开源软件 - ITeye博客
Google 刚刚开源了grpc,  一个基于HTTP2 和 Protobuf 的高性能、开源、通用的RPC框架. Protobuf 本身虽然提供了RPC  的定义语法,但是一直以来,Google 只开源了Protobuf 序列化反序列化的代码,而没有开源RPC 的实现,于是存在着众多良莠不齐的第三方RPC 实现,不过我在项目中采用WCF搭配Protobuf是一个很不错的RPC实现,Google这个框架是是基于HTTP2的,这是他有特色的地方,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性.

集成libevent,google protobuf的RPC框架

- goodman - C++博客-那谁的技术博客
chenshuo的evproto同样也是集成libevent与google protobuf的RPC框架,不过在对libevent的使用上,这里的做法与他不尽相同:. 1) 他使用了libevent自带的RPC功能, 而这里只使用到libevent对网络I/O进行的封装的最基本的功能.. eventrpc项目目前是avidya下的一个子项目,avidya项目的定位是实现一些分布式的玩具系统(比如google已经公开论文的chubby,mapreduce,GFS等),也许以后不一定能被用上,但是也要实践做一把.由于有一个好用的RPC框架是做分布式的必需品,所有首先实现eventrpc这个子项目了,以后也许还会实现其他语言的版本,如python,java..

protobuf,json,xml,binary,Thrift之间的对比

- - 学习笔记
一条消息数据,用protobuf序列化后的大小是json的10分之一,xml格式的20分之一,是二进制序列化的10分之一,总体看来ProtoBuf的优势还是很明显的. protobuf是google提供的一个开源序列化框架,类似于XML,JSON这样的数据表示语言,详情访问protobuf的google官方网站 https://code.google.com/p/protobuf/.

通过netty提供Protobuf服务

- - ITeye博客
1、下载安装Protocol Buffer.     >下载地址: http://code.google.com/p/protobuf/.     >需要下载文件:protobuf-2.5.0.tar.gz(也可以直接下载protobuf-java-2.5.0.jar;这里通过maven生成);protoc-2.5.0-win32.zip(windows平台需要).

HTTP Headers 入门

- johnny - Time Machine
非常感谢 @ytzong 同学在twitter上推荐这篇文章,原文在此. 本文系统的对HTTP Headers进行了简明易懂的阐述,我仅稍作笔记. 什么是HTTP Headers. HTTP是“Hypertext Transfer Protocol”的所写,整个万维网都在使用这种协议,几乎你在浏览器里看到的大部分内容都是通过http协议来传输的,比如这篇文章.

HTTP基础

- - ITeye博客
HTTP的结构主要包括下面几个要点:. HTTP的版本主要有1.0,1.1 和更高版本.    1.1 及以上版本允许在一个TCP连接上传送多个HTTP协议,1.0能 .    1.1 及以上版本多个请求和响应可以重叠,1.0不能.    1.1 增加了很多的请求头和响应头.     一个请求行,若干小心头,以及实体内容,其中的一些消息头和实体内容是可选的,消息头和实体内容需要空行隔开.

HTTP Header 详解

- - 博客园_Ruby's Louvre
HTTP(HyperTextTransferProtocol)即超文本传输协议,目前网页传输的的通用协议. HTTP协议采用了请求/响应模型,浏览器或其他客户端发出请求,服务器给与响应. 就整个网络资源传输而言,包括message-header和message-body两部分. 首先传递message- header,即 http header消息.

HTTP负载测试

- - 博客 - 伯乐在线
英文原文: ON HTTP LOAD TESTING 来源: oschina. 有很多人在谈论HTTP服务器软件的性能测试,也许是因为现在有太多的服务器选择. 这很好,但是我看到有人很多基本相同的问题,使得测试结果的推论值得怀疑. 在日常工作中花费了很多时间在高性能代理缓存和源站性能测试方面之后,这里有我认为比较重要的一些方面来分享.

HTTP断点续传

- - CSDN博客互联网推荐文章
要实现断点续传的功能,通常都需要客户端记录下当前的下载进度,并在需要续传的时候通知服务端本次需要下载的内容片段. HTTP1.1协议(RFC2616)中定义了断点续传相关的HTTP头 Range和Content-Range字段,一个最简单的断点续传实现大概如下:.   1.客户端下载一个1024K的文件,已经下载了其中512K.

http-kit 1.2 发布

- - 开源中国社区最新新闻
Http-kit 是主要由Java 和Clojure开发,为Clojure定制的零依赖的Http lib,包括异步的高性能HTTP Server 和 HTTP Client. 在普通的PC上进行性能测试时,http-kit server 每秒能处理数万个请求. 修复处理文件上传时,content-type没能正确处理.