2017-02-12 80 views
0

我正在开发中的API应该由导轨4.0红宝石并发cron作业需要

在系统同时处理的,连续的系统中,每个用户具有3个脚本在后台运行。脚本从DB获取用户的信息以反复调用API并处理事务。目前我正在使用cronjob(每当宝石)在后台为每个用户运行脚本

所以我的问题是当系统有1,000人时,我需要运行3000 cronjobs。 我觉得这个系统会有问题。任何人都可以帮我解决这个问题吗?

+0

也许看看Sidekiq的宝石...虽然我不知道我理解你的要求。 – Myst

回答

0

此时,您有一个定期执行一些任务的系统,系统必须处理的工作量(比方说,每小时)少于它可以处理的工作量。

但是,工作量会随着系统中的用户数量的增加而增加,因此,正如您已经猜到的那样,情况会非常严峻。您的系统将无法处理它必须完成的所有任务。

解决此问题的一种方法是在系统中添加更多计算机,也就是说,如果您当前正在使用单台计算机来运行所有任务,请考虑添加另一台计算机并拆分作业。您可以通过多种方式在机器之间分配作业,但我会使用consumer-producer方法。

您需要使用您的生产定期发送批量任务要做一个队列管理器(您仍然可以使用whenever宝石为)等多家消费者(1是没有意义的,2现在就可以了,但你可以增加这个数字)把任务一个接一个地完成,直到没有剩下任务。

我最喜欢的经理是Sidekiq,但是您可以找到其他可以更好地满足您需求的人。

+0

你给了我一个有用的关键词,我想对你说声谢谢 – nvp512

+0

欢迎你随时提出新问题,如果需要的话,使用这个平台学习和分享你的知识;) – Bustikiller