17.Идемпотентность в микросервисах: все способы защиты от повторной обработки
Java_Beginner
0:00 / 0:00
17.Идемпотентность в микросервисах: все способы защиты от повторной обработки
405 просмотров · 1 месяц назад
Java_Beginner
1,01 тыс. подписчиков
405 просмотров · 1 месяц назад
В этом видео мы разбираем фундаментальную проблему распределённых систем: как гарантировать, что операция выполнится ровно один раз, несмотря на сетевые сбои, ретраи и асинхронные коммуникации. Мы проходим путь от осознания неизбежности повторов до построения надёжной архитектуры с использованием нескольких паттернов идемпотентности.
Что вы узнаете:
Что такое идемпотентность и почему она бывает технической и бизнес‑.
Как в 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