На сервере постоянно запущена функция обновления кэша, будет ли он блокировать все остальные функции сервера? - PullRequest
0 голосов
/ 09 мая 2018

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

Мой вопрос: если на моем сервере постоянно работает эта функция обновления книги заказов, заблокирует ли он все остальные функции сервера? Смогут ли пользователи когда-нибудь взаимодействовать с моим сервером?

Нужно ли создавать отдельную службу для выполнения обновления, или может Node каким-то образом расставить приоритеты для запросов API и приостановить функцию кэширования?

Ответы [ 2 ]

0 голосов
/ 10 мая 2018

Мой вопрос: если на моем сервере постоянно запущена эта книга заказов функция обновления, заблокирует ли она все остальные функции сервера? Будет пользователи когда-нибудь смогут взаимодействовать с моим сервером?

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

Нужно ли создавать отдельный сервис для выполнения обновления, или Узел как-то расставит приоритеты запросов API и приостановит функцию кеширования?

Узел потребляет только событие из очереди событий. Здесь нет приоритетов.

С точки зрения проектирования вам следует искать варианты, которые могут уменьшить эту нагрузку при записи, например, массовое создание / редактирование или, если вы используете redis для кэширования, рассмотрите redis pipe

0 голосов
/ 10 мая 2018

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

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

Соединения с базой данных.Сервер тратит много времени на ожидание выполнения запросов к базе данных.Если у вас есть одно соединение с базой данных для всего приложения, и это соединение занято, им придется ждать, пока соединение с базой данных не станет свободным.Возможно, вы захотите посмотреть на пул соединений с базой данных.

...