Ответ 1
Здесь есть две проблемы:
- Выбор языка. Вам нужно будет решить для себя, если вы предпочитаете python или javascript, и который предлагает библиотеки, которые вы хотите. Я не могу помочь вам с этой частью решения.
- Выбор модели ввода-вывода.
В отличие от того, что в статье предлагается, в принципе, неплохая однопоточная неблокирующая модель ввода-вывода. Лично мне эта модель очень нравится, так как она устраняет сложности многопоточности, все еще работая над моделью общей памяти.
Еще одно преимущество этой модели состоит в том, что, поскольку вам не нужен поток для каждого запроса, вы можете иметь много одновременных открытых запросов.
Один из недостатков заключается в том, что без поддержки языка вам необходимо явно ограничивать очереди, вместо того чтобы писать код простым императивным образом. С# 5 атакует эту проблему своей функцией асинхронного ожидания, и я не удивлюсь, если node.js предложит нечто подобное в будущем.
В основном речь идет о втором недостатке: если вы блокируете основной поток, вы блокируете весь сервер.
Один из его примеров - просто злоупотребление: он выполняет оживленное ожидание, а не подписывается на событие. При правильном программировании это просто не должно происходить.
В другом примере больше точки: если вы используете вычисления с интенсивным вычислением, лучше не делать их в основном потоке. Простое решение этого - вращение рабочего потока, которое делает расчет без касания памяти, используемой основным потоком. И как только это делается, он вызывает обратный вызов в основном потоке. Не уверен, что node.js предлагает это, хотя. Но поскольку многие серверные приложения не связаны с ЦП, это часто не является проблемой вообще.
В целом эта статья очень низкое качество и больше рассказывает об авторе, чем о node.js. Вы не должны позволять этому влиять на ваше решение.