Как корректно реализовать «сборщика» информации (из стороннего публичного API)?
Необходимо парсить стороннее публичное API (json) (примерно каждые 3 секунды 5-15 MB) и затем добавлять всё это в базу на ElasticSearch (по этим данным потом осуществляется поиск). Как "правильно" это реализовать? На данный момент я склоняюсь к варианту реализации этого парсера внутри сервера node.js (этот же сервер будет отвечать клиентам по их поисковым запросам), но у меня есть сомнения в "правильности" такой реализации, не помешает ли это клиентам получать и искать информацию? Не замедлит ли это ответы на запросы? Стоит ли реализовывать этот парсер отдельным приложением/процессом?
PS Очевидно, что я задаю такие вопросы только из-за своего незнания и неопытности. Пожалуйста, поймите меня правильно и не закидывайте тапками. Очень надеюсь на ваш ответ (даже если это будет лишь "такая реализация вполне допустима"). Спасибо!
Да, замедлит, делайте отдельным процессом/приложением. Нода однопоточная, поэтому пока приложение разбирает json, готовит его к вставке в бд, оно не сможет отвечать клиентам и они будут видеть это как тормоза сайта.
loly: здравый смысл:) у меня в похожих случаях есть папка scripts в проекте, где лежат файлики типа downloadData.js, которые запускаются по cron'у. Эти скриптики используют часть кода из основного приложения (конфиги, данные для подключения к дб, модели).
Константин Китманов: но тогда появляется ряд проблем (т.к. эти скрипты запускаются "по отдельности") (от того, что сторонний сервер (API) может забанить за слишком частые обращения (и тогда надо увеличить время между обращениями) до обращения к базе данных (в node я использую готовый модуль из npm, как его в обычном js использовать?).