distributed
Распределённые системы
Что ломается, когда система работает на множестве машин, — и как они договариваются, остаются доступными и не усугубляют сбои. Продвинутый уровень; сначала освойся хотя бы с одним бэкендом.
Начать трек →С нуля
Перед senior-материалом: что вообще такое распределённая система и горстка слов, которые остальной трек считает уже знакомыми.Cap practice
Скоро — Распределёнка на практикеRaft-консенсус: выборы лидера, репликация лога и production-эксплуатация
Как 3–7 машин договариваются об одном упорядоченном логе — выборы лидера, AppendEntries, кворумные коммиты, pre-vote, snapshot и ops-дисциплина, удерживающая Raft-кластер живым в production.Quorum
Скоро — Распределёнка на практикеLeader election
Скоро — Распределёнка на практикеClocks
Скоро — Распределёнка на практикеSagas
Скоро — Распределёнка на практикеRetry amplification
Скоро — Распределёнка на практикеPutting it together
Скоро — Распределёнка на практикеПроекты по этому треку
Guided-проекты, которые закрепляют изученное здесь.
Очередь задач at-least-once
Собери долговечную очередь задач на Postgres с visibility timeout и идемпотентными консьюмерами, чтобы упавший воркер не терял задачу.
Прерыватель цепи
Собери прерыватель цепи, который прекращает долбить падающую зависимость, безопасно прощупывает её в состоянии half-open и автоматически восстанавливается — именно этот паттерн не даёт каскаду микросервисов превратить один плохой узел в полный простой.
Совместные курсоры
Показать живой курсор и выделение каждого подключённого пользователя в общем документе, без конфликтов, через WebSocket.
Кольцо consistent hashing
Собери кольцо на виртуальных узлах, которое перераспределяет минимальный набор ключей при появлении или уходе узла — базовый примитив за Dynamo, Cassandra и каждым шардированным кэшем, который должен пережить ротацию узлов без полного перебалансирования.
Планировщик задач
Планировщик задач cron + backoff с доставкой at-least-once, идемпотентными обработчиками и visibility timeout — чтобы ни одна задача не терялась молча, даже при краше воркера на середине выполнения.
Офлайн-синхронизация PWA
Notes PWA с офлайн-приоритетом: локальная очередь записей (IndexedDB), которая синхронизируется при переподключении через last-writer-wins, service worker для кеширования ресурсов и background sync для пропущенных записей.
Распределённый rate limiter
Собери token-bucket лимитер, который держится поперёк многих инстансов приложения за счёт счётчика в Redis, а не в памяти процесса.
Union-Find (система непересекающихся множеств)
Построй структуру непересекающихся множеств от наивного массива родителей до почти константного амортизированного времени — и прими на ней алгоритм Краскала для поиска минимального остовного дерева.
Краш-устойчивое key-value хранилище с WAL
Собери крошечное дисковое KV-хранилище, которое переживает kill -9 на середине записи, дописывая в write-ahead log до изменения основного файла.
Безопасность
Как на самом деле атакуют приложения и как от этого защищаться — безопасный вход и сессии, проверка входных данных и типичные ошибки, через которые утекают данные.