Node.js или сервлеты? [закрыто]

10

Я много слышал и читал о серверном языке Javascript, т.е. Node.js, и видел много сравнений в пользу Node.

Я не понимаю, что делает его лучше или быстрее, или как это связано с чем-то таким зрелым, как Java-сервлеты.

Но сервлеты создаются на основе многопоточного языка программирования, а не Node.js. Тогда как node.js может быть быстрее?

Если предположить, что 1000 тыс. Пользователей запрашивают записи в базе данных, то Node.js не должен быть медленнее, чем сервлеты.

Также разве сервлеты не имеют большей безопасности по сравнению с Node.js?

журнал N
источник
И процессы, и потоки можно использовать для масштабирования любого приложения для многоядерного использования. Вам не нужны оба.
Райнос
@Raynos Разве нельзя связать функциональность связанного с C? Я просто взял на себя роль JS как неблокирующего мессенджера авто-очереди для передачи вещей на вещи более низкого уровня, но я все еще не получил свои лапы на Node.
Эрик Реппен

Ответы:

12

Вы смешиваете яблоки и апельсины, вроде.

Сервлеты (или унаследованные от HttpServlet) позволяют получить доступ к параметрам HTTP-запроса и ответить чем-либо через (или поверх) существующей реализации HTTP-сервера.

Хотя в качестве языка используется Javascript, Node.js находится на более низком уровне. Это начинается с фактической реализации HTTP-сервера. Тем не менее, вы можете заняться более высокоуровневыми вещами, такими как веб-приложения.

Насчет многопоточности не нужно. Серверы Node.js не быстрее из-за многопоточности, они быстрее, потому что они не блокируют запросы ввода-вывода, поэтому они могут продолжать загружать их в очередь, занимаясь другими делами. Они работают только тогда, когда есть работа - они ее не ждут - и это, как оказалось, приводит к серьезному повышению производительности.

Что касается запросов к базе данных, то здесь речь идет скорее об ограничениях в модели базы данных и API, чем о клиенте.

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

Ям Маркович
источник
3
Servlet 3 поддерживает асинхронный ввод-вывод точно так же, как Node
jiggy
3
jiggy - Существует большая разница между поддержкой чего-либо и созданием чего-то с нуля . Узел асинхронности является последним.
Джек
1
@Yam Marcovic Я до сих пор не понимаю, что вы подразумеваете под «они не блокируют запросы ввода-вывода». Даже в JEE поток будет работать независимо, что не остановит выполнение другого запроса. Как новый поток создается за запрос. Имею ли я смысл?
Оливер