2017-02-12 17 views
0

Я разрабатываю систему, в которой API должен обрабатывать одновременным непрерывные рельсами 4.0рубин Параллелизм в хронах нужно

В системе каждый пользователь имеет 3 сценарии, которые будут выполняться в фоновом режиме. Сценарии захватывают информацию пользователя из БД, чтобы повторно вызвать API и обрабатывать транзакцию. В настоящее время я использую cronjob (всякий раз, когда gem) запускать сценарии в фоновом режиме для каждого отдельного пользователя

Так что моя проблема в том, что в системе 1000 человек, мне нужно запустить 3000 cronjobs. Я думаю, что эта система будет иметь проблемы. Может ли кто-нибудь помочь мне решить эту проблему?

+0

Возможно, посмотрите на камень Sidekiq ... хотя я не уверен, что понимаю ваши требования. – Myst

ответ

0

На данный момент у вас есть система, которая периодически выполняет некоторые задачи, и объем работы, которую ваша система должна обрабатывать (скажем, в час), меньше, чем объем работы, которую он может обрабатывать.

Однако количество работ увеличивается с увеличением числа пользователей в вашей системе, поэтому, как вы уже догадались, будет момент, когда ситуация будет критической. Ваша система не сможет справиться со всеми задачами, которые она должна выполнять.

Одним из способов решения этой проблемы является добавление в вашу систему дополнительных компьютеров, то есть если вы используете в настоящее время одну машину для выполнения всех своих задач, подумайте о добавлении другого и разделите задание. Вы можете разделить работу между машинами несколькими способами, но я бы использовал подход consumer-producer.

Вам нужно будет использовать менеджер очереди, где ваш производитель периодически отправляет партию выполняемых задач (вы все еще можете использовать whenever камень для этого) и ряд потребителей (1 не имеет смысла, 2 теперь все будет в порядке, но вы можете увеличить это число). Выполняйте задания один за другим, пока их не осталось.

Менеджер, который мне больше всего нравится Sidekiq, но вы можете найти другие, которые могут лучше соответствовать вашим потребностям.

+0

Вы дали полезное ключевое слово для меня, я хочу сказать спасибо вам – nvp512

+0

Добро пожаловать, не стесняйтесь задавать новые вопросы, если необходимо, и использовать эту платформу, чтобы узнать и поделиться своими знаниями;) – Bustikiller