ruby-on-rails – Heroku上的每夜批处理网络任务
我们正在研究Heroku上的Rails项目,该项目需要每晚为每个用户搜索和处理数据.这需要每个用户进行许多Internet访问,我们希望能够支持数以万计的用户.虽然对所涉及的数据库进行了大量的解析,计算和写入,但我们预计大部分任务的时间将用于等待来自网络的数据.
在最小化挂钟时间和Heroku费用的同时,执行此任务的最佳通用方法是什么?显然,要么需要并发或异步网络来利用等待网络所花费的时间,但我们应该怎么做呢?我们正在考虑使用分叉工作进程的数据库支持队列,但这可能不是最好的方法 – 或者甚至可能在Heroku上不可能. 解决方法
Heroku
supports Delayed Job,我会从那里开始.然后,您可以执行以下操作:
>创建一个为单个用户执行处理的作业类 您需要使用您的工作/工作比率来确定优化数据库负载,挂钟时间和heroku成本的最佳位置. 如果你发现每个工作花费太多时间等待网络,请看看eventmachine.工作只是ruby代码,所以你可以玩你想要的任何并行化技巧,Heroku不应该以任何方式限制你. 这个设置将是一个非常好的基线,因为它不应该花很长时间来启动,你可能会从中学到一些关于你的工作负荷. 您可能会发现1个工作/用户没有意义,并且每个用户需要n个工作(每个属性一个工作或某个工作).在不知道你确切的用例的情况下,很难预先说出来,这就是我假设1-1映射的原因. 我还应该指出新的Heroku堆栈supports queueing systems other than Delayed Job(滚动到底部). (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |