open atlas

distributed

Распределённые системы

Что ломается, когда система работает на множестве машин, — и как они договариваются, остаются доступными и не усугубляют сбои. Продвинутый уровень; сначала освойся хотя бы с одним бэкендом.

9 юнитов·46 уроков·~41 ч

Начать трек
00

С нуля

Перед senior-материалом: что вообще такое распределённая система и горстка слов, которые остальной трек считает уже знакомыми.
01

Cap practice

Скоро — Распределёнка на практике
02

Raft-консенсус: выборы лидера, репликация лога и production-эксплуатация

Как 3–7 машин договариваются об одном упорядоченном логе — выборы лидера, AppendEntries, кворумные коммиты, pre-vote, snapshot и ops-дисциплина, удерживающая Raft-кластер живым в production.
03

Quorum

Скоро — Распределёнка на практике
04

Leader election

Скоро — Распределёнка на практике
05

Clocks

Скоро — Распределёнка на практике
06

Sagas

Скоро — Распределёнка на практике
07

Retry amplification

Скоро — Распределёнка на практике
08

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 до изменения основного файла.

Следующий трек

Безопасность

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