К основному содержимому
ВШЭ · Лекция 01

Система начинается с отказа

Что сервис обязан сохранять, когда часть системы недоступна?

Распределённые системы · ВШЭ · 01

Содержание слайдов

  1. 1. Система начинается с отказа

    Что сервис обязан сохранять, когда часть системы недоступна?

  2. 2. Успех API создаёт обязательство системы

    Подтверждённая задача должна сохраниться в заявленной модели отказов.

  3. 3. Сервис состоит из независимых мест отказа

    Процесс API, хранилище и брокер могут отказывать по-разному.

  4. 4. Часть системы продолжает работать во время сбоя

    Клиент и сервер могут наблюдать разные результаты.

  5. 5. Crash-stop исключает дальнейшие шаги процесса

    Остановившийся участник не возвращается в этом исполнении.

  6. 6. При восстановлении важна память, пережившая процесс

    RAM исчезает; подтверждённые устойчивые записи должны сохраниться.

  7. 7. Сообщение может исчезнуть, повториться или опоздать

    Порядок доставки по сети не обязан совпадать с порядком вызовов.

  8. 8. Молчание не доказывает смерть участника

    Медленное вычисление и разрыв сети могут выглядеть одинаково.

  9. 9. Ложный ответ требует другой модели защиты

    Crash-протокол не обязан терпеть произвольное нарушение правил.

  10. 10. Модель стенда задаёт область обещаний

    Потерю всех устойчивых копий не имитируем как обычный отказ узла.

  11. 11. Безопасность запрещает плохое состояние

    Один ключ не должен породить две разные задачи.

  12. 12. Продвижение требует условий среды

    После восстановления обработка должна продолжиться.

  13. 13. Сохранённые данные могут быть временно недоступны

    Отсутствие ответа ещё не означает потерю записи.

  14. 14. Инвариант описывает смысл состояния

    Для проверки нужны ключи, задачи и результаты.

  15. 15. Базовый эффект находится внутри хранилища

    Эффект лабораторной — сохранённый результат задачи.

  16. 16. Подтверждение следует после устойчивого решения

    Порядок «ответить, затем сохранить» нарушает обещание.

  17. 17. После фиксации ответ может исчезнуть

    Синтетическая трасса одной принятой задачи.

  18. 18. Неизвестный исход — самостоятельное состояние клиента

    Он требует выяснения результата, а не догадки.

  19. 19. Создание связывает состояние и намерение доставки

    Task, idempotency и outbox фиксируются одной txn.

  20. 20. ACK следует после фиксации результата

    Result, dedup и completed обновляются вместе.

  21. 21. Для завершения нужны несколько живых зависимостей

    etcd, брокер и обработчик выполняют разные обязанности.

  22. 22. Потеря ACK не требует второго результата

    Синтетическая трасса: задача T7, два получения сообщения.

  23. 23. Тест отказа проверяет восстановленное состояние

    «Процесс не упал» недостаточно для инварианта.

  24. 24. Разделите нарушенный инвариант и остановленный прогресс

    Три истории требуют разных выводов.

  25. 25. Отчёт начинается с обещания и предположений

    Потом идут сценарий, наблюдения и вывод.

  26. 26. Решения для нашего сервиса

    Отделить наблюдение от предположения об отказе.

    Сформулировать безопасность и условия продвижения.

    Проверить подтверждённую задачу после сбоя.