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

События, очереди и потоки

Как повторить доставку без повторного бизнес-эффекта?

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

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

  1. 1. События, очереди и потоки

    Как повторить доставку без повторного бизнес-эффекта?

  2. 2. Повторяется доставка, а не бизнес-намерение

    Одно событие сохраняет идентичность во всех попытках.

  3. 3. Хранение, доставка и эффект происходят отдельно

    Каждый этап имеет собственное подтверждение.

  4. 4. Подтверждения отвечают на разные вопросы

    Publisher ACK и consumer ACK не взаимозаменяемы.

  5. 5. Порядок журнала не равен порядку завершения

    Параллельные исполнители меняют наблюдаемый порядок.

  6. 6. Распределение работы требует явного лимита

    Незавершённые сообщения занимают ресурсы.

  7. 7. Хранение определяет окно повторного чтения

    Очередь не является бесконечной историей.

  8. 8. Позиция потребителя не хранит бизнес-результат

    Прогресс брокера и состояние etcd различаются.

  9. 9. Ранний ACK способен потерять задачу

    Падение после подтверждения оставляет пустой результат.

  10. 10. Поздний ACK делает повтор нормальным

    Результат уже есть, подтверждение ещё неизвестно.

  11. 11. Ключ дедупликации обозначает логическое действие

    Он переживает рестарт и повтор доставки.

  12. 12. Эффект и память о нём фиксируются вместе

    etcd Txn объединяет три изменения.

  13. 13. Одновременные повторы встречаются в одной проверке

    Только одна успешная ветка создаёт эффект.

  14. 14. ACK следует за подтверждённым локальным исходом

    При неизвестном commit сначала читаем состояние.

  15. 15. Повтор читает прежний результат

    Код запускается снова, запись эффекта остаётся одна.

  16. 16. Внешний эффект требует отдельного протокола

    Оплату нельзя включить в локальный etcd Txn.

  17. 17. Relay завершает намерение после публикации

    Неопределённость оставляет возможность повтора.

  18. 18. Порядок сущности выражается в её состоянии

    Событие должно соответствовать ожидаемому переходу.

  19. 19. Параллельность требует допустимых перестановок

    Независимость проверяется по эффекту, а не по времени.

  20. 20. Повторное чтение имеет собственную цель

    Повтор эффекта и построение проекции различаются.

  21. 21. Очистка памяти сужает гарантию повтора

    Срок dedup согласуется с возможным replay.

  22. 22. Невыполнимая задача требует явного исхода

    Бесконечный повтор не является восстановлением.

  23. 23. Отставание связывает вход и мощность обработки

    Если вход быстрее, очередь растёт.

  24. 24. Восстановите обработчик после двух падений

    Проверьте результат и память о нём.

    Разобрать commit до ACK

    Учесть конкурентный повтор

    Проверить очистку dedup

  25. 25. Безопасный повтор замыкает всю цепочку

    Каждая граница имеет устойчивое продолжение.

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

    Разделить сохранение, доставку, выполнение и ACK.

    Построить атомарный обработчик с дедупликацией.

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