Size: a a a

Node.js — русскоговорящее сообщество

2021 February 24

М

Максим in Node.js — русскоговорящее сообщество
Алексей
Мне пока тяжело осознавать материал на низком уровне. Мне скорее хотелось бы пройтись по верхам(более-менее абстрактно).
Например, предполагается, что node.js сервер со всеми своими зависимостями умеет держать 40к соединений одновременно. Мне понятно, как выполняются операции на уровне v8 для каждого из запросов, но не понятно как libuv держит эти 40к соединений в абстракции. Вычитал, что libuv предоставляет thread pool и 4х(вроде) тредов, готовые выполнять i/o операции.
Используются ли эти треды из тредпула libuv для поддержания сетевых соединений, или используется какая-то другая сущность?
Понятно, что мне стоит перелопатить всю доку libuv, но чую будет тяжело понять библиотеку концептуально, если нырять сразу в нее.
Вообще, сетью занимается операционная система. Сверху libuv, потом нода.
Так что бери акваланг, если уж так глубоко собрался погружаться 😉
источник

А

Алексей in Node.js — русскоговорящее сообщество
Максим
Вообще, сетью занимается операционная система. Сверху libuv, потом нода.
Так что бери акваланг, если уж так глубоко собрался погружаться 😉
Да уж, придется)
С nginx как-то проще было, куча доступной инфы по тому, как хендлится большое кол-во запросов. Без низкоуровневой конкретики на уровне железок. Для nodejs+libuv таких пока не нашел
источник

A

Adv0cat in Node.js — русскоговорящее сообщество
Алексей
т.е. для вертикального масштабирования в целях поддержания бОльшего кол-во соединений достаточно лишь увеличить кол-во RAM?
А вам точно nodejs для этого нужен? 😏
источник

А

Алексей in Node.js — русскоговорящее сообщество
Adv0cat
А вам точно nodejs для этого нужен? 😏
А у меня нет задачи) Я лишь пытаюсь понять как libuv аллоцирует ресурсы под новые соединения, и как их держит, и соответственно, понять, почему оказалось так, что веб сервер на ноде так хорош для сервисов с большим кол-вом соединений
источник

А

Алексей in Node.js — русскоговорящее сообщество
Но мне уже становится понятнее, исходя из ответов ребят
источник

М

Максим in Node.js — русскоговорящее сообщество
Алексей
А у меня нет задачи) Я лишь пытаюсь понять как libuv аллоцирует ресурсы под новые соединения, и как их держит, и соответственно, понять, почему оказалось так, что веб сервер на ноде так хорош для сервисов с большим кол-вом соединений
Так нгинкс ещё лучше.
источник

A

Adv0cat in Node.js — русскоговорящее сообщество
Алексей
А у меня нет задачи) Я лишь пытаюсь понять как libuv аллоцирует ресурсы под новые соединения, и как их держит, и соответственно, понять, почему оказалось так, что веб сервер на ноде так хорош для сервисов с большим кол-вом соединений
Лучше бы вы с таким интересом на Rust/Golang/C++ интересовались и как они хороши, а не тратили свое время на nodejs 😅
источник

А

Алексей in Node.js — русскоговорящее сообщество
Максим
Так нгинкс ещё лучше.
Не спорю, мне лишь интересно как оно уот так уот работает
источник

I

Igor in Node.js — русскоговорящее сообщество
Алексей
А у меня нет задачи) Я лишь пытаюсь понять как libuv аллоцирует ресурсы под новые соединения, и как их держит, и соответственно, понять, почему оказалось так, что веб сервер на ноде так хорош для сервисов с большим кол-вом соединений
классические серверы используют синхронную работу с сокетами, из-за этого вынуждены выделять по отдельному потоку на соединение, отсюда все проблемы
источник

А

Алексей in Node.js — русскоговорящее сообщество
Adv0cat
Лучше бы вы с таким интересом на Rust/Golang/C++ интересовались и как они хороши, а не тратили свое время на nodejs 😅
А я джаваскриптизер, который пытается лучше понимать свои инструменты
источник

А

Алексей in Node.js — русскоговорящее сообщество
Igor
классические серверы используют синхронную работу с сокетами, из-за этого вынуждены выделять по отдельному потоку на соединение, отсюда все проблемы
Несомненно)
источник

A

Adv0cat in Node.js — русскоговорящее сообщество
Алексей
А я джаваскриптизер, который пытается лучше понимать свои инструменты
Ну просто вы задаете вопросы не связанные с яваскриптом вообще никак)))) А на ваши вопросы лучше ответит более глубокое изучение перечисленных мной выше языков, вы вообще откроете для себя очень многое, а не только конкретную реализацию чего бы то нибыло 😉
источник

М

Максим in Node.js — русскоговорящее сообщество
Алексей
Да уж, придется)
С nginx как-то проще было, куча доступной инфы по тому, как хендлится большое кол-во запросов. Без низкоуровневой конкретики на уровне железок. Для nodejs+libuv таких пока не нашел
Может и не нужно туда копать?
Отличительной особенностью ноды была её асинхронность в отличии от пхп. В этом была фишка скорости.
Фишка как раз в том чтоб писать код на жс и не вникать в дебри.
источник

А

Алексей in Node.js — русскоговорящее сообщество
Максим
Может и не нужно туда копать?
Отличительной особенностью ноды была её асинхронность в отличии от пхп. В этом была фишка скорости.
Фишка как раз в том чтоб писать код на жс и не вникать в дебри.
Думаю, что стоит. Как минимум для понимания того, где сервер на ноде будет упираться в ограничения и почему
источник

М

Максим in Node.js — русскоговорящее сообщество
Adv0cat
Ну просто вы задаете вопросы не связанные с яваскриптом вообще никак)))) А на ваши вопросы лучше ответит более глубокое изучение перечисленных мной выше языков, вы вообще откроете для себя очень многое, а не только конкретную реализацию чего бы то нибыло 😉
+
источник

М

Максим in Node.js — русскоговорящее сообщество
Алексей
Думаю, что стоит. Как минимум для понимания того, где сервер на ноде будет упираться в ограничения и почему
Но это всё с нодой уже действительно не связано.
Это конечно полезно, но без этого жаваскриптизеру можно жить. В этом и смысл ноды.
Иначе тебе нужно поинтересоваться как работает сети, ос, познакомиться с си и так далее.
источник

А

Алексей in Node.js — русскоговорящее сообщество
Adv0cat
Ну просто вы задаете вопросы не связанные с яваскриптом вообще никак)))) А на ваши вопросы лучше ответит более глубокое изучение перечисленных мной выше языков, вы вообще откроете для себя очень многое, а не только конкретную реализацию чего бы то нибыло 😉
Наверное я не дал себя правильно понять)
Я взял nodejs, начал ковыряться почему он так хорошо справляется с кучей параллельных соединений. Наткнулся на libuv. Пытаюсь понять, для начала, почему libuv концептуально(без низкоуровневых дебрей) так хорошо справляется с обработкой соединений. Понял, что в отличие от мультитредовых сред, под каждое соединение(как говорилось ранее), не выделяется куча ресурсов под поток для каждого соединения. Теперь встал вопрос: как libuv работает с соединениями в одном треде. После понимания этого вопроса я уже точно дальше не полезу)
источник

М

Максим in Node.js — русскоговорящее сообщество
Алексей
Наверное я не дал себя правильно понять)
Я взял nodejs, начал ковыряться почему он так хорошо справляется с кучей параллельных соединений. Наткнулся на libuv. Пытаюсь понять, для начала, почему libuv концептуально(без низкоуровневых дебрей) так хорошо справляется с обработкой соединений. Понял, что в отличие от мультитредовых сред, под каждое соединение(как говорилось ранее), не выделяется куча ресурсов под поток для каждого соединения. Теперь встал вопрос: как libuv работает с соединениями в одном треде. После понимания этого вопроса я уже точно дальше не полезу)
Как разберешься — напиши.
источник

А

Алексей in Node.js — русскоговорящее сообщество
Видимо, оставшийся вопрос действительно требует ныряния с головой
источник

А

Алексей in Node.js — русскоговорящее сообщество
Максим
Как разберешься — напиши.
👍
источник