Мультипоточность в Go: всё, что нужно знать
Курс-спецкурс по конкурентности Go: весь слой «горутины и всё, что вокруг них» — от планировщика GMP и модели памяти до паттернов работы с системами микросервиса (HTTP, БД, кэш, брокеры, внешние API).
Как устроен курс. Каждый модуль открывается конкретной задачей или инцидентом — импорт 100 тысяч строк при десяти соединениях, горячий ключ, который истёк, партнёрский API, который лёг. Паттерн появляется как ответ на задачу, а не как абстракция сама по себе. Ключевые механизмы — singleflight, token bucket, circuit breaker, диспетчер очередей — пишем своими руками на stdlib, чтобы видеть устройство, и только потом смотрим на готовые библиотеки.
Пять блоков:
- Модель исполнения (модули 1–2) — планировщик GMP, GOMAXPROCS, модель памяти, happens-before и гонки.
- Примитивы координации (3–5) — каналы и владение,
select, мьютексы,atomic,sync.Once/Map/Pool. - Паттерны конкурентных вычислений (6–9) — pipelines и fan-in/out, worker pool и лимиты, rate limiting, таймауты, retry и hedged requests.
- Микросервисные паттерны (10–13) — конкурентный HTTP-сервер, graceful shutdown, circuit breaker и bulkhead, очереди в процессе.
- Системы вокруг (14–18) — параллельные запросы к БД, кэш и singleflight, конкурентные консьюмеры брокеров, утечки горутин и диагностика, капстоун-краулер.
Вход: go-basic m6 (горутины, каналы, мьютексы) и m8 (HTTP) — или эквивалентный опыт. Выход: mq-track (гарантии и брокеры), pg-clickhouse (данные), go-advanced m3 (распределённые паттерны — Saga, outbox).
Формат: теория с Go-кодом в каждом модуле, детерминированные сниппеты в песочнице (можно запускать и ломать), практика с артефактом, квиз, итоги и мостик. ~8 недель в спокойном темпе.