加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Heroku上的每夜批处理网络任务

发布时间:2020-12-17 03:46:00 所属栏目:百科 来源:网络整理
导读:我们正在研究Heroku上的Rails项目,该项目需要每晚为每个用户搜索和处理数据.这需要每个用户进行许多Internet访问,我们希望能够支持数以万计的用户.虽然对所涉及的数据库进行了大量的解析,计算和写入,但我们预计大部分任务的时间将用于等待来自网络的数据. 在
我们正在研究Heroku上的Rails项目,该项目需要每晚为每个用户搜索和处理数据.这需要每个用户进行许多Internet访问,我们希望能够支持数以万计的用户.虽然对所涉及的数据库进行了大量的解析,计算和写入,但我们预计大部分任务的时间将用于等待来自网络的数据.

在最小化挂钟时间和Heroku费用的同时,执行此任务的最佳通用方法是什么?显然,要么需要并发或异步网络来利用等待网络所花费的时间,但我们应该怎么做呢?我们正在考虑使用分叉工作进程的数据库支持队列,但这可能不是最好的方法 – 或者甚至可能在Heroku上不可能.

解决方法

Heroku supports Delayed Job,我会从那里开始.然后,您可以执行以下操作:

>创建一个为单个用户执行处理的作业类
>安排一个nightly cron,为系统中的每个用户创建一个作业
>自动扩展您的工作人员以容纳作业队列(workless或类似的应该能够为您执行此操作.如果没有,您可能需要滚动一些自定义代码.)

您需要使用您的工作/工作比率来确定优化数据库负载,挂钟时间和heroku成本的最佳位置.

如果你发现每个工作花费太多时间等待网络,请看看eventmachine.工作只是ruby代码,所以你可以玩你想要的任何并行化技巧,Heroku不应该以任何方式限制你.

这个设置将是一个非常好的基线,因为它不应该花很长时间来启动,你可能会从中学到一些关于你的工作负荷.

您可能会发现1个工作/用户没有意义,并且每个用户需要n个工作(每个属性一个工作或某个工作).在不知道你确切的用例的情况下,很难预先说出来,这就是我假设1-1映射的原因.

我还应该指出新的Heroku堆栈supports queueing systems other than Delayed Job(滚动到底部).

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读