2014-11-04 17 views
1

如何使用Apache Thrift流式传输文件(图像)? 我已经搜索了很多关于Thrift的信息,并没有找到任何关于它的书面文档。为什么Facebook在没有文档的情况下开源此项目?如何使用Apache Thrift将图像从Python流式传输到C++

+0

“*没有找到任何有关它的书面文档*” - http://thrift.apache,org/docs和[this answer](http://stackoverflow.com/questions/20653240/what-is -rpc-framework-and-apache-thrift/20664706#20664706)不符合你的需求? “* Facebook为什么没有文档开源此项目*” - [他们显然没有](https://thrift.apache.org/static/files/thrift-20070401.pdf)。也许Google索引已过时,因此您无法找到这些链接? – JensG 2014-11-05 09:00:00

+0

我的意思是一个API Doc列出的类和方法 – Mahdi 2014-11-05 11:44:27

+0

教程和测试服务器/客户端对解释Thrift比任何API类列表都做得更好。我也强烈推荐[兰迪即将出版的Thrift书](http://www.manning.com/abernethy/),已经可以通过MEAP获得。更多信息在这里http://stackoverflow.com/questions/20653240/what-is-rpc-framework-and-apache-thrift/20664706#20664706 - 顺便说一句,上面的链接之一是不正确的,它是http://节俭.apache.org/docs – JensG 2014-11-05 15:56:00

回答

2

我建议的方法是建立你的服务,以块的形式传送数据,就像这样:

struct DataChunk { 
    1 : binary data 
    2 : bool haveMoreData 
} 

service { 
    DataChunk GetChunk(1 : string resource, 2: i32 offset, 3: i32 size) 
} 

这似乎是一个好主意,要么size限制一些理智值(需要进行检查在服务器端),或者根本除去size参数,并始终提供固定的预定义大小的块,以规避请求疯狂大型数据块的客户端。

请注意,整个过程需要遵循拉模型,没有内置的推送功能。但是,您仍然可以进行推送,只需在客户端运行Thrift服务器并传递必要的连接信息即可。尽管这不适用于所有场景(尤其是运输场景),但在可能的情况下,这是一个完全有效的解决方案。

相关问题