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

Sdílet
Vložit
  • čas přidán 28. 10. 2018
  • Ближайшая конференция - HolyJS 2024 Autumn, 7 ноября (online), 14-15 ноября (Санкт-Петербург + трансляция).
    Подробности и билеты: jrg.su/K18Cxd
    - -
    . . Опытный Node.js-разработчик, обладает большим багажом знаний по созданию и поддержке высоконагруженных систем на Node.js
    Рост функциональности в Enterprise Node.js приложениях часто приводит к снижению пропускной способности. В этом докладе мы начнем с дисперсии Main Thread (основного потока Node.js) и разложим его на спектр выполняемых в нем операций. Узнаем, какие из этих операций мы можем перенести в отдельные потоки/воркеры/процессы и как это сделать. Мы выберем успешные способы распараллеливания для каждого типа операций, рассмотрим их преимущества и ограничения. Помимо стандартных способов мы также рассмотрим альтернативные решения распараллеливания задач используя возможности V8 и libuv thread pool. В завершение сравним как архитектура приложения и пропускная способность изменились после декомпозиции Main Thread.
  • Věda a technologie

Komentáře • 26

  • @GeorgiiGalechyan
    @GeorgiiGalechyan Před rokem +4

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

  • @shinobi_313
    @shinobi_313 Před 2 lety +1

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

  • @user-zg3vt6zh6y
    @user-zg3vt6zh6y Před 5 lety

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

  • @ilovegame1712
    @ilovegame1712 Před 3 lety

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

  • @vladimirkrasulya8693
    @vladimirkrasulya8693 Před 3 lety +6

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

    • @hgfyos
      @hgfyos Před 3 lety +1

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

    • @vladimirkrasulya8693
      @vladimirkrasulya8693 Před 3 lety +1

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

    • @hgfyos
      @hgfyos Před 3 lety +1

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

    • @maksimsergeevich5939
      @maksimsergeevich5939 Před 2 lety

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

  • @iGotton
    @iGotton Před 3 lety

    +

  • @torodinson5260
    @torodinson5260 Před 3 lety +14

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

  • @semzin
    @semzin Před 8 měsíci

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

  • @serious_psychologist
    @serious_psychologist Před 5 lety +12

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

    • @metalcorewitchkhousovitch5774
      @metalcorewitchkhousovitch5774 Před 4 lety +5

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

    • @maksimsergeevich5939
      @maksimsergeevich5939 Před 4 lety +5

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

  • @Kharaman.V
    @Kharaman.V Před 5 lety +5

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

    • @ericraudy
      @ericraudy Před 5 lety +25

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

    • @metalcorewitchkhousovitch5774
      @metalcorewitchkhousovitch5774 Před 4 lety +16

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

    • @alexanderbelkin5978
      @alexanderbelkin5978 Před 4 lety +5

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

    • @maksimsergeevich5939
      @maksimsergeevich5939 Před 4 lety +4

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

    • @user-jd7ub3tq2b
      @user-jd7ub3tq2b Před 7 měsíci +2

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