Понимание NodeJS и неблокирующий ввод-вывод
Итак, недавно я получил инъекцию вируса Node, который очень быстро распространяется в мире программирования.
Я очарован подходом «неблокирующий ввод-вывод» и действительно попробовал несколько программ сам.
Тем не менее, я не понимаю некоторые концепции в настоящее время.
Мне нужны ответы в терминах непрофессионала (кто-то из Java)
1. Многопоточность и неблокирование ввода / вывода.
Давайте рассмотрим практический сценарий. Скажем, у нас есть сайт, где пользователи могут зарегистрироваться. Ниже будет код.
..
..
// Read HTTP Parameters
// Do some Database work
// Do some file work
// Return a confirmation message
..
..
В традиционном языке программирования все вышеперечисленное происходит последовательно. И, если есть несколько запросов на регистрацию, веб-сервер создает новый поток, а остальное - история. Конечно, программисты могут создавать свои собственные потоки для одновременной работы со строкой 2 и строкой 3.
В Node, как я понимаю, строки 2 и 3 будут выполняться параллельно, в то время как остальная часть программы будет выполняться, а интерпретатор опрашивает строки 2 и 3 каждую 'x' мс.
Теперь мой вопрос: если Node является однопоточным языком, что выполняет работа со строками 2 и 3, пока выполняется остальная часть программы?
2. Масштабируемость
Недавно я читал, что LinkedIn адаптировал Node в качестве бэк-энда для своих мобильных приложений и увидел значительные улучшения.
Кто-нибудь может объяснить, как это изменило ситуацию?
3. Адаптация на других языках программирования
Если люди утверждают, что Node имеет большое значение, когда речь заходит о производительности, почему другие языки программирования не адаптировали эту парадигму неблокирующего ввода-вывода?
Я уверен, что что-то упустил. Только если вы можете объяснить мне и направить меня с некоторыми ссылками, будет полезно.
Благодарю.