Межпроцессовое взаимодействие в Node.js

แชร์
ฝัง
  • เผยแพร่เมื่อ 23 ส.ค. 2024
  • Примеры кода: github.com/How...
    Курс «Основы программирования» с примерами на JavaScript habr.com/ru/po...
    #javascript #ipc #nodejs #межпроцессовое #взаимодействие #программирование #лекции #js

ความคิดเห็น • 19

  • @ale0x314
    @ale0x314 5 ปีที่แล้ว +11

    Спасибо за очень крутую лекцию :)
    Очень доходчиво объяснен материал

  • @oleksiiborovykov6306
    @oleksiiborovykov6306 3 ปีที่แล้ว +1

    Дивлюсь і радуюсь, дякую)

  • @silicongen
    @silicongen 3 ปีที่แล้ว +1

    Концепция ipc пока сложно дается, продолжу смотреть следующие видео.
    Спасибо за годные лекции, Тимур!

  • @timashoff
    @timashoff ปีที่แล้ว

    Спасибо за лекции!
    Столкнулся с проблемой отправки message от воркера при использовании esm во 2-ом примере.
    с commonJS все работает идеально.
    upd: ничего умнее "топорного" решения обернуть send в primary.js в сеттаймаут не придумал(
    `setTimeout(() => worker.send({ task }), 1000)`

  • @malkevych
    @malkevych 4 ปีที่แล้ว +4

    Дякую, чудова лекція!
    Скільки воркерів зазвичай потрібно робити, щоб не було оверхеда? До прикладу в нас є N ядер. Наскільки я розумію потрібно брати N - 1, так як в нас одне ядро забирає мастер процес.
    Також цікавить питання про пул тредів, який є в ноді (для вводу / виводу), вони працюють на одному ядрі з мастером чи воркер має свій пул тредів для вводу / виводу? Заздалегіть дякую!

    • @TimurShemsedinov
      @TimurShemsedinov  4 ปีที่แล้ว +1

      Потоки по распределению процессорного времени мало отличаются от процессов. Нужно что-то оставлять под операционку, но бывают случаи, когда потоков можно делать в 2-4 раза больше, если потоки часто впадают в сон, например через Atomics.wait или ждут ввода-вывода ничего не делая ничего, кроме пустого кручения ивегтлупа.

  • @TimurSevimli
    @TimurSevimli ปีที่แล้ว

    Спасибо большое за лекцию!
    Вообще пример с cluster оптимальный ? Просто у меня 8 ядра и Primary процесс создает 8 дочерних процессов в итоге в 1 ядре работает Primary процесс, а еще 8 дочерних процессов всего на 8 ядре 9 процессов создается. Возможно стоит код изменить на "os.cpus().length - 1" или может все правильно и так и должно быть ? 🤔

  • @user-if3cd8em4q
    @user-if3cd8em4q ปีที่แล้ว +1

    А как организовать систему обмена сообщениями между процессом, порожденным child_process.spawn()?

    • @TimurShemsedinov
      @TimurShemsedinov  ปีที่แล้ว

      Через файловый потокб pipe, nodejs.org/api/child_process.html#optionsstdio

    • @TimurShemsedinov
      @TimurShemsedinov  ปีที่แล้ว

      @@user-if3cd8em4q нет, можно много раз

    • @user-if3cd8em4q
      @user-if3cd8em4q ปีที่แล้ว +1

      @@TimurShemsedinov Всё, разобрался, действительно можно. Отправлял с помощью subprocess.write() исполняемому файлу C++, забыл в конце '/n' добавить))))

  • @shmonatan
    @shmonatan 2 ปีที่แล้ว +2

    подскажите, а где видео = 7:57 специальная лекция по проектированию протоколов

    • @TimurShemsedinov
      @TimurShemsedinov  2 ปีที่แล้ว +2

      У меня был отдельный курс по проектированию протоколов, но записи не делал. А все, что есть по протоколам - тут - github.com/HowProgrammingWorks/Index/blob/master/Courses/Network.md

    • @shmonatan
      @shmonatan 2 ปีที่แล้ว +1

      @@TimurShemsedinov Спасибо

    • @shmonatan
      @shmonatan 2 ปีที่แล้ว +1

      @@TimurShemsedinov Подскажите пожалуйста, возможно ли на модуле net, обработать сокет(response), что бы его воспринимал браузер

    • @TimurShemsedinov
      @TimurShemsedinov  2 ปีที่แล้ว

      @@shmonatan Возможно, но зачем?

    • @shmonatan
      @shmonatan 2 ปีที่แล้ว

      @@TimurShemsedinov хочется понять как сокет отправляет данные в браузер

  • @user-mm5bx4qq7z
    @user-mm5bx4qq7z ปีที่แล้ว

    Вот когда разбирали библиотеку fs, все было понятно. Операции чтение-запись данные - насущные. Тут и рад бы потратить больше времени на углубление, но не понятна практическая ценность всех действий, что показаны в лекции.