后期我这边用tornado做下载的接口,慢慢的也开始承受不了了。
现在的模式是用socket的模式,用msgpack socket来解决,堵塞的问题是用threading线程池解决的。但是zeormq也是个高端版的socket,我这边用底层的socket对于大文件是比zeromq强,但是压力大了,还是蹦出异常。。
现在的需求是,我需要在下载文件的时候,提交一个由master分配给他的临时key,带着这个key去下载文件。 其实方法比较的简单,比如让10个人下载这个文件,我就产生了10个临时的key,然后用saltstack api的模式,传给客户端,然后客户端拿着这个key去下载。
我现在的想法是用 nginx lua的模式,在access_by_lua里面增加redis的key的判断,当key匹配成功后,我再给他下载的地址。
这边也已经大体实现了,但是和后端的交互产生了冲突,正在解决。。还有一个问题是用ngx.location.capture 做子访问的时候。
res = ngx.location.capture( '/api/redisget', { method = ngx.HTTP_POST, body = post_from_key } )
还是那句话,你要是不想搞复杂了,就简单的用 saltstack rsync的方案就行啦。 如果想折腾,有体现高端的话,可以用用我介绍的那几种方法, sokect或者是nginx lua redis的模式。
希望官网能出一个好的方案来解决saltstack下发文件速度慢的问题。
原文地址:nginx lua和redis解决saltstack传输文件慢的问题, 感谢原作者分享。