Николай Матвиенко - Декомпозиция Main Thread в Node.js для увеличения пропускной способности

Поделиться
HTML-код
  • Опубликовано: 3 окт 2024

Комментарии • 26

  • @GeorgiiGalechyan
    @GeorgiiGalechyan Год назад +5

    Полтора месяца назад я почти ничего не понимал. Сейчас смотрю, и понятно почти всё. Приятно что моё самостоятельное обучение даёт плоды))

  • @shinobi_313
    @shinobi_313 2 года назад +1

    спасибо, очень доходчиво и структурировано:)
    p.s. было бы здорово прикладывать к видео ссылки которыми делится докладчик

  • @ilovegame1712
    @ilovegame1712 3 года назад

    Классный доклад!

  • @vladimirkrasulya8693
    @vladimirkrasulya8693 4 года назад +6

    Я не понял каким образом он там что-то ускорил методом разнесения по процессам, ведь количество ресурсов для выполнения работы не уменьшилось а даже увеличилось из-за накладных расходов на IPC , в его схеме прирост может быть только если у на есть свободные ядра или же в коротких пиках нагрузки когда все накладные расходы в стиле fire and forget

    • @hgfyos
      @hgfyos 3 года назад +1

      RPS - это не совсем про скорость, а скорее про объём. Один поток с Event Loop может обрабатывать грубо говоря, одновременно несколько запросов, но туда же идут все промисы, тем самым забивая Event Loop, очередь промисов в котором ограничена. И разбиением на процессы мы освобождаем в нашем главном потоке event loop и тем самым даём ему меньше работы и больше места в очереди промисов, что позволяет обработать больше запросов в этом главном потоке. В общем пытаются реализовать условный Thread Pull, как в Java,/C#, но только очень костыльно. Использование Thread Pull (и похожих схем многопоточной и многопроцессорной работы) в любом случае несёт за собой временные издержки на обработку запроса, но по итогу мы можем их обработать больше, чем без него. А наличие свободного ядра (а ещё точнее процессорных потоков), конечно, обязательно. В одноядерной системе прирост хоть и будет, но не такой, чтобы ради него так заморачиваться.

    • @vladimirkrasulya8693
      @vladimirkrasulya8693 3 года назад +1

      @@hgfyos так в том то дело что прирост будет только при наличии свободных ядер cpu и при таком раскладе гораздо эффективнее поднять на этих ядрах инстансы основного процесса

    • @hgfyos
      @hgfyos 3 года назад +1

      @@vladimirkrasulya8693 создать поток дешевле, чем создать инстанс, тем более если потребуется это сделать динамически. Да и помимо процессорных потоков, мы же можем пользоваться виртуальными. Собственно тут и суть в том, что мы выделяем потоки по мере потребностей и не мы занимаемся балансировкой нагрузки между ними. Но в докладе представлены довольно костыльное решение (да и других решений пока нет), из-за чего всё же действительно проще просто поднять инстансы. Надо ждать официально в ноде Thread Pull Manager

    • @maksimsergeevich5939
      @maksimsergeevich5939 2 года назад

      @@hgfyos А есть выгода использовать cluster? Или лучше само приложение полностью копировать средствами снаружи и запускать инстансы? Если мы хотим все ядра загрузить.

  • @torodinson5260
    @torodinson5260 3 года назад +14

    нее, это явно не мой уровень

  • @БогданЮрчук-т8о
    @БогданЮрчук-т8о 5 лет назад

    Хороший доклад

  • @rudinandrey
    @rudinandrey 5 лет назад +12

    node такая быстрая за счет того что все выполняется в одном потоке. Как ускорить node ? распаралелить ноду )))))) чтото ржу я над всем эти )))

    • @metalcorewitchkhousovitch5774
      @metalcorewitchkhousovitch5774 5 лет назад +5

      "node такая быстрая за счет того что все выполняется в одном потоке" - слишком уж вы сильно исказили услышанную где-то мысль, либо невнимательно воспринимаете информацию

    • @maksimsergeevich5939
      @maksimsergeevich5939 4 года назад +5

      Просто люди не умеют или не хотят формулировать мысли грамотно. Здесь имеется ввиду, что Node.js имеет преимущество не потому, что она однопоточная, а потому, что она создает один поток, не роняет его, и обрабатывает все запросы в нем. Из-за этого сервер быстро отвечает, так как не тратит время на порождение потока, как в PHP например.
      Разумеется на любом языке программирования, распараллеливание увеличивает производительность.

  • @semzin
    @semzin 10 месяцев назад

    Уже практически в 2024 актуально хоть?)

  • @iGotton
    @iGotton 4 года назад

    +

  • @Kharaman.V
    @Kharaman.V 5 лет назад +5

    Слишком заученный текст, бросается в глаза

    • @ericraudy
      @ericraudy 5 лет назад +25

      Слишком хорошо подготовился докладчик? Должен был побольше ошибаться и мямлить?

    • @metalcorewitchkhousovitch5774
      @metalcorewitchkhousovitch5774 5 лет назад +16

      Гитарист слишком сильно заучил партию, бросается в глаза

    • @alexanderbelkin5978
      @alexanderbelkin5978 5 лет назад +5

      Вы как никогда не выступали - там же телесуфлёр снизу.

    • @maksimsergeevich5939
      @maksimsergeevich5939 4 года назад +4

      У большинства докладчиков почти всегда одна тема с которой они выступают по всему миру много раз. И с каждым новым выступлением они приходят к пониманию, что есть вещи сказанные хорошо, и хочется повторить их еще раз слово в слово.

    • @Николай-г5т6ч
      @Николай-г5т6ч 9 месяцев назад +2

      Ору, как ни сделай, скажут дурак