Я пишу приложение Node.js, которое - короткая история - отдает приоритет различным процессам ввода-вывода, в зависимости от активности / местоположения пользователя на веб-сайте. Пока что все работает отлично - сначала запускаются важные элементы из очереди, а менее важные - позже.
Сложность в том, что одновременно происходит множество вещей: пользователи входят в систему, пользователи переходят на другую страницу, пользователи делают что-то, что требует немедленной обработки и т. Д. По большей части я не беспокоюсь о том, как работает Node. JS управляет очередью событий, но в некоторых случаях я. Я представляю ситуацию, когда в моей очереди событий есть целая куча вещей (возможно, потому, что куча пакетов ввода-вывода только что вернулась и ожидает обработки), и пользователь выполняет действие на моем сайте, которое требует немедленный запрос ввода-вывода, а затем немедленная обработка, когда этот запрос возвращается.
Я никогда не писал приложение Node.js, которое требовало бы от меня реального беспокойства о масштабировании, поэтому я не уверен на 100% в его способности обрабатывать мои события в правильном порядке. Это глупо беспокоиться? Будет ли Node.js обрабатывать вещи настолько невероятно быстро, что я никогда не смогу реально заметить блокировку, или очень возможно, что при масштабировании я начну видеть существенные задержки в обработке важных вещей?
Если это законное беспокойство, есть ли какие-либо интерфейсы в Node.js, где я могу вручную назначать приоритеты своей очереди событий?
Обновление:
@ Рикардо Томази поднял в комментариях хороший момент: если мое приложение действительно сильно загружает процессор, оно, вероятно, не принадлежит Node.js. Это заставило меня понять, что мое приложение на самом деле не сильно загружает процессор и, вероятно, будет работать нормально.
Чтобы доказать это себе, я сделал небольшой тест:
var a = new Date().getTime() + 1000;
var b = new Date().getTime();
var c = 0;
while(b < a) {
c++;
b = new Date().getTime();
}
console.log(c + " loops in 1 second.");
У меня было чуть меньше 200 000 петель, что достаточно доказало мне, что мне не о чем беспокоиться. Однако мне все еще интересно узнать, есть ли способ вручную управлять очередью событий Node.js. Кто-нибудь знает?