Перейти к содержимому
Опубликовано

🐎 Проблема двух генералов

Автор
  • Имя
    Максим | Системный анализ
    Telegram

Кратко

🐎 Проблема двух генераловПредставьте: две армии стоят на двух холмах. Между ними враг. Победить можно, только если обе армии атакуют...

🐎 Проблема двух генералов

Представьте: две армии стоят на двух холмах. Между ними враг. Победить можно, только если обе армии атакуют одновременно. Если атакует одна, то её разобьют. Первый генерал посылает гонца:
Атакуем в 6:00
Второй генерал получает сообщение. Теперь он знает время. Но первый не знает, получил ли второй это сообщение. Если второй не получил, первый будет атаковать один и погибнет. Поэтому первый ждёт подтверждения.
Второй отправляет гонца обратно:
Понял, атакуем в 6:00
Первый получает подтверждение. Теперь он знает, что письмо дошло. Но второй не знает, дошло ли его подтверждение. Он думает:
А вдруг мой гонец не дошёл, и первый не уверен, что я в курсе? Тогда он может не атаковать. А я атакую и погибну...
И так до бесконечности

В доставке электронных сообщений ситуация ничем не отличается, поэтому есть три вида договоренности, как мы доставляем:

At most once В лучшем случае сообщение дойдет, но может и не дойти. Используется, когда нужна скорость, но можно что-нибудь потерять (например, в стриминге видео). Настройки kafka: acks=0 retries=0 enable.auto.commit=true

At least once Сообщение точно будет доставлено, но возможны дубли. Настройки kafka: acks=all min.insync.replicas=2 retries=Integer.MAX_VALUE (ретраим, пока не отправится) enable.auto.commit=false

Exactly once Доставка точно один раз без дубликатов. Теоретически невозможно, но на практике используют проверку на дубли со стороны консьюмера, специальные механизмы транзакционности и к at least once настройкам добавляют: enable.idempotence=true isolation.level=read_committed

@maximbelovmentor

Максим | Системный анализ
349 подписчиков
95 постов
Как войти в IT через системный анализ и получить оффер от 200к+. Опыт Senior аналитика из топ-банков. Разборы, практика, собесы, техника мышления аналитика. Бесплатная консультация - в закрепе.