Распределённые системы: что ломается и как договориться
Что происходит, когда система живёт на нескольких узлах: частичные отказы, ненадёжные часы и сеть, линеаризуемость и CAP, консенсус и кворумы, сквозной аргумент и правда об exactly-once.
Зачем. Как только сервис перестаёт быть одним процессом на одной машине, появляется класс проблем, которых в монолите не было: узел не отвечает — но жив ли он, часы разошлись, сообщение пришло дважды. Этот раздел — про природу этих проблем и про то, какие гарантии вообще достижимы. Входит в программу подготовки.
Три статьи: сначала что именно ломается, потом какие гарантии можно купить, потом как рассуждать о корректности целиком.
Статьи раздела
- Проблемы распределённых систем — частичные отказы, ненадёжные часы и сеть, истина по кворуму.
- Согласованность и консенсус — линеаризуемость, CAP и почему за всеми задачами согласия стоит одна общая.
- Корректность в распределённой системе — сквозной аргумент, правда об exactly-once, целостность против своевременности.
Связанное
- Фундамент данных — репликация и шардинг, из-за которых узлов становится много.
- Распределённые паттерны — outbox, saga, идемпотентность: чем лечить перечисленное здесь.
- Устойчивость — таймауты, ретраи, circuit breaker.
- Системный дизайн — метод, в шаге «поведение при отказах» которого всё это и всплывает.