awesome-everything EN
↑ Обратно к восхождению

Архитектура бэкенда

Async vs blocking: свободное воспроизведение

Суть Промпты на свободное воспроизведение по всему юниту async/blocking. Сначала ответь по памяти, затем открой модельный ответ и сравни.
Высота — путь к senior
НольJuniorMiddleSenior
Ты на senior-высоте — в орбите
◷ 13 min

Воспроизведение бьёт перечитывание. На каждый промпт скажи или напиши полный ответ по памяти прежде, чем открыть модельный — усилие припоминания и превращает юнит из конспекта в инстинкт.

Цель

Восстанови хребет юнита, не подглядывая: две модели I/O, фазы loop и правило microtasks, что его блокирует и как это увидеть, куда выносить CPU-работу, как ограничить конкурентность и почему хвост взрывается у насыщения.

Вспомните перед уходом
  1. 01
    Сравни блокирующий thread-per-connection с неблокирующей моделью event loop и объясни, почему event loop выигрывает на 50 000 простаивающих соединений.
  2. 02
    Опиши фазы event loop и правило дренажа microtasks и используй их, чтобы упорядочить setTimeout(0), setImmediate и разрешённый промис внутри I/O-колбэка.
  3. 03
    Почему один синхронный участок замораживает весь сервер и какой сигнал лучше всего его ловит?
  4. 04
    Какие два пула потоков стоят за loop, что выполняет каждый и сколько стоит worker thread?
  5. 05
    Объясни backpressure и ограниченную конкурентность и как выбирать лимит конкурентности k.
  6. 06
    Почему задержка взрывается у насыщения, почему смотреть на хвост, а не на среднее, и что значит «один loop — одно ядро»?
Итог

Если ты смог восстановить каждый ответ по памяти — у тебя хребет юнита: модель I/O решает, как тратить ожидание, фазы loop плюс дренаж microtasks решают порядок, единственный синхронный участок замораживает всех (ловится event-loop lag, а не CPU), пул libuv выполняет нативный I/O, а CPU-bound JS требует worker thread, который ты платишь кормить данными, backpressure и лимит конкурентности подгоняют скорость производства к скорости потребления, а у насыщения хвост взрывается нелинейно — поэтому смотри p99 и ELU и работай с запасом, ведь один loop — одно ядро.

Продолжить восхождение ↑Async vs blocking: чтение кода и трейсов
хоткеи развернуть
поиск
K
пред. пьеса
k
след. пьеса
j
тиры
t
это меню
?
sources3
expand
  1. 01
  2. 02
  3. 03

Trademarks belong to their respective owners. Editorial reference only.