Cron работа для больших данных - PullRequest
0 голосов
/ 26 августа 2009

Я работаю в такой социальной сети, как Friendfeed. Когда пользователь добавляет свои ссылки на фид, я использую задание cron для анализа каждого фида. Возможно ли это с большим количеством пользователей, например, разбором 10.000 ссылок каждый час, или это вызовет проблемы? Если это невозможно, что для этого используется в Friendfeed или программах для чтения RSS?

Ответы [ 5 ]

4 голосов
/ 26 августа 2009

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

Если вы в конечном итоге проанализируете миллионы ссылок, одна большая работа cron станет проблематичной. Я предполагаю, что вы делаете следующее (если нет, вам, вероятно, следует):

  • Понимание того, когда пользователи подписываются на один и тот же фид, чтобы не получать его дважды.
  • При получении нового фида проверьте наличие карты сайта, показывающей, как часто фид может меняться, повторно посетите это значение в разумный интервал
  • Проверка загрузки системы и использования памяти, чтобы узнать, когда нужно «выключиться» и ненадолго заснуть.

Это уменьшает количество пота, которое производит почасовой крон.

Если вы собираете миллионы фидов, вам, вероятно, захочется распространить эту работу, о чем вы, возможно, захотите помнить, пока еще разрабатываете свою базу данных.

Опять же, пожалуйста, обновите ваш вопрос, указав подробную информацию об используемом оборудовании и о том, насколько масштабным должно быть ваше решение. Ничто не масштабируется «бесконечно», поэтому, пожалуйста, будьте реалистами:)

0 голосов
/ 22 апреля 2012

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

0 голосов
/ 26 августа 2009

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

Как много раз говорил основатель FF: единственное решение для выбора наилучшего фактического решения - это профилирование / измерение. С числами выбор будет очевиден.

Итак: создайте тестовую архитектуру, близкую к ожидаемой (= реалистичной) ситуации, через несколько месяцев и профиль / показатель.

0 голосов
/ 26 августа 2009

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

Конечно, вы хотите, чтобы несколько процессов выполняли работу одновременно, чтобы ускорить процесс.

0 голосов
/ 26 августа 2009

Не достаточно информации, чтобы судить о том, хорош этот дизайн или нет, но чтобы ответить на основной вопрос, если только вы не выполняете очень интенсивную обработку 10k вопросов, это должно быть тривиально для ежечасной работы cron .

Дополнительная информация о том, как вы обрабатываете фиды, и, в частности, о том, как этот процесс масштабируется в зависимости от количества пользователей, у которых есть фиды, и количества фидов на пользователя, будет полезна для предоставления вам дополнительных советов.

...