17.Идемпотентность в микросервисах: все способы защиты от повторной обработки
В этом видео мы разбираем фундаментальную проблему распределённых систем: как гарантировать, что операция выполнится ровно один раз, несмотря на сетевые сбои, ретраи и асинхронные коммуникации. Мы проходим путь от осознания неизбежности повторов до построения надёжной архитектуры с использованием нескольких паттернов идемпотентности. Что вы узнаете: - Что такое идемпотентность и почему она бывает технической и бизнес‑. - Как в Kafka и Kafka Connect рождаются дубли (и почему идемпотентный продюсер здесь не спасает). - Почему нельзя просто отключить ретраи – теоретический предел at‑least‑once. - Четыре способа защиты от дублей в реальном коде: - Уникальность в БД – финальная гарантия для платежей. - Redis-блокировка – быстрый фильтр перед БД. - Inbox Pattern – транзакционная дедупликация для Kafka-консьюмеров. - Idempotency‑Key для REST API – защита на входе в систему. - Сравнительный анализ и критерии выбора подхода для вашего сценария. - Почему после всех защит неизбежна Eventual Consistency и как с ней жить. Проект OrderHub доступен на GitHub: 🔗 https://github.com/Oleborn/OrderHub Таймкоды: 00:00 – Вступление 01:18 – Отступление про рефакторинг проекта 10:45 – Идемпотентность – определение и два уровня 16:04 – CAP 21:43 – Гарантии доставки сообщений 26:19 – Где могут возникнуть повторы? 35:50 – Демонстрация проблемы – двойное списание в OrderHub 47:17 – Почему нельзя убрать повторы? 50:42 – Способ №1 – уникальность в БД 01:09:06 – Способ №2 – Локальный кэш – почему не подходит для микросервисов 01:11:04 – Способ №3 – Redis (распределённая блокировка) 01:29:12 – Способ №4 – Inbox Pattern – транзакционная дедупликация 01:44:24 – Способ №4 – Idempotency‑Key для REST API 02:06:01 – Сравнительный анализ – как выбирать Наш канал в телеграмм https://t.me/Java_for_beginner_dev. Мы не претендуем на правильность всего сказанного в видео, мы только учимся)) Знаете что-то лучше и готовы поделиться - добро пожаловать! #Java #Kafka #идемпотентность #kafka #микросервисы #паттерны #ретраи #каптеорема #eventualconsistency #inboxpattern #outboxpattern #idempotencykey #redis #postgresql #springboot #camunda #debezium #orderhub #архитектура #надежность #дублирование #exactlyonce #atleastoncedelivery #микросервиснаяархитектура #java #kafkaconnect
В этом видео мы разбираем фундаментальную проблему распределённых систем: как гарантировать, что операция выполнится ровно один раз, несмотря на сетевые сбои, ретраи и асинхронные коммуникации. Мы проходим путь от осознания неизбежности повторов до построения надёжной архитектуры с использованием нескольких паттернов идемпотентности. Что вы узнаете: - Что такое идемпотентность и почему она бывает технической и бизнес‑. - Как в Kafka и Kafka Connect рождаются дубли (и почему идемпотентный продюсер здесь не спасает). - Почему нельзя просто отключить ретраи – теоретический предел at‑least‑once. - Четыре способа защиты от дублей в реальном коде: - Уникальность в БД – финальная гарантия для платежей. - Redis-блокировка – быстрый фильтр перед БД. - Inbox Pattern – транзакционная дедупликация для Kafka-консьюмеров. - Idempotency‑Key для REST API – защита на входе в систему. - Сравнительный анализ и критерии выбора подхода для вашего сценария. - Почему после всех защит неизбежна Eventual Consistency и как с ней жить. Проект OrderHub доступен на GitHub: 🔗 https://github.com/Oleborn/OrderHub Таймкоды: 00:00 – Вступление 01:18 – Отступление про рефакторинг проекта 10:45 – Идемпотентность – определение и два уровня 16:04 – CAP 21:43 – Гарантии доставки сообщений 26:19 – Где могут возникнуть повторы? 35:50 – Демонстрация проблемы – двойное списание в OrderHub 47:17 – Почему нельзя убрать повторы? 50:42 – Способ №1 – уникальность в БД 01:09:06 – Способ №2 – Локальный кэш – почему не подходит для микросервисов 01:11:04 – Способ №3 – Redis (распределённая блокировка) 01:29:12 – Способ №4 – Inbox Pattern – транзакционная дедупликация 01:44:24 – Способ №4 – Idempotency‑Key для REST API 02:06:01 – Сравнительный анализ – как выбирать Наш канал в телеграмм https://t.me/Java_for_beginner_dev. Мы не претендуем на правильность всего сказанного в видео, мы только учимся)) Знаете что-то лучше и готовы поделиться - добро пожаловать! #Java #Kafka #идемпотентность #kafka #микросервисы #паттерны #ретраи #каптеорема #eventualconsistency #inboxpattern #outboxpattern #idempotencykey #redis #postgresql #springboot #camunda #debezium #orderhub #архитектура #надежность #дублирование #exactlyonce #atleastoncedelivery #микросервиснаяархитектура #java #kafkaconnect
