Архитектура для создания монитора работоспособности в Node.js - PullRequest
3 голосов
/ 19 июня 2011

Какое наилучшее решение для использования Node.js и Redis для создания системы мониторинга работоспособности? Могу ли я использовать Redis как очередь, но это не лучший способ сохранить информацию, может быть, MongoDB?

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

Ответы [ 2 ]

1 голос
/ 21 июня 2011

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

Вы можете (должны) использовать Redis в качестве своей очереди.Это будет очень быстро.

Я также думаю, что это будет очень хороший вариант для сохранения информации внутри Redis.К сожалению Redis не делает никакого выбора времени (пока).Я думаю, что вы могли бы / должны использовать Beanstalkd для помещения в очередь сообщений, которые доставляются при необходимости (каждые x секунд).Я также думаю, что cron - это не очень хорошая идея, потому что вам понадобится много из них, и при использовании очереди вы можете выполнять свою работу быстрее (распределить нагрузку между несколькими процессами).

Также я не думаю, что вам нужно так много памяти, чтобы сохранить все в памяти (делает сайт быстрым), потому что набор данных будет относительно простым.Даже если вы не можете (умно получить больше памяти, если вы спросите меня) поместить весь набор данных в память, вы можете положиться на виртуальную память Redis .

Это выглядит довольнопросто, но нужно иметь более одного сервера, чтобы гарантировать, что сервер не работает, и заставить все работать вместе, не так просто.жесткий).К счастью, Redis поддерживает репликацию (также может быть достигнуто разбиение).MongoDB поддерживает шардинг / репликацию из коробки.Честно говоря, я не думаю, что вам нужен шардинг, и ваш набор данных довольно прост, поэтому Redis будет быстрее:

1 голос
/ 20 июня 2011

Для мониторинга времени безотказной работы вы должны использовать задание Cron в системе.При каждом вызове вы будете проверять, работает ли хост, и сколько времени это займет.И в этом сценарии вы сохраните свои данные в Redis.

Чтобы сделать это в Node.JS, вы должны создать скрипт, который проверяет состояние сервера.Просто сделать HTTP-запрос к серверу (или Ping, мы) и записать, если он не работает или нет.Тогда я бы просто записал это в Redis.То, как вы это делаете, не имеет значения, потому что скрипт (если вы запускаете cron каждые 30 секунд) имеет [30] секунд до следующего запуска, поэтому вам не нужно беспокоиться о получении запроса на сервер.Как вы сохраняете свои данные, зависит только от вас, но в этом случае даже MySQL будет работать (если вы работаете только с небольшим количеством сайтов)

...