写个 task 把一堆文件处理并且信息保存到 mongo 数据库,本地文件量有近千万,任务是顺序执行,目前的速度瓶颈主要在文件处理上,每秒不到 2 个的处理速度,算下来执行完任务。。。。。。。哭了(其实任务操作很简单,就是文件量太大了),所以想找个多线程/多进程/并发任务
的工具来批量执行文件处理任务,具体需求:
- 暂时只考虑 ruby (非 rails,觉得 ruby 目前还成不了 task 的瓶颈)
- 能并发的执行任务 (可以对每个文件拆分出数据和操作独立的的子任务)
- 可以控制并发数量 (控制任务的资源占用量)
- 尽量简单
由于对大量数据处理没什么经验(这里仅仅是数据多),大部分工作还是在逻辑处理上,特求经验分享!
另外贴上自己的尝试:
- Thread: 不好拿捏,曾经用 thread 做过并发的消息处理,某个 thread 自身出现问题处理起来不方便,另外没法对 thread 并发做限制(可能个人经验不足把,thread 跑起来和 nodejs 一样像个疯子)
- 目前正在尝试 resque 和 sidekiq(刚上手),把文件处理放到队列中,减少顺序任务的执行时间,不过不太了解队列任务是否并发执行,如果是而且可以设置并发量那太好了,基本解决现有问题