Перейти к содержанию

At-least-once + idempotency vs exactly-once processing

Раздел 04 · Сравнения

Тип материала: инженерное сравнение. Выводы зависят от workload и failure model; схема и сценарии иллюстративные.

Проверка источников: 2026-11-02. Численные latency, throughput, cost и SLA не измерялись.

Критерии выбора

Критерий At-least-once + sink idempotency Engine exactly-once
Workload Внешняя DB/projection с durable identity Часто одна поддерживаемая engine/transport область
Consistency Один эффект в заданной sink transaction Согласованный committed state/output при connector contract
Latency / throughput Повторный lookup/constraint; contention hot keys Checkpoint/transaction overhead и длительность commit
Cost / scalability Inbox storage и retention; sharding по identity domain State/checkpoint storage; coordination с sink
Operational complexity Payload conflicts, replay horizon, restore marker/effect Connector versions, timeout, recovery pending transactions

Механизм и ограничения

Выбирайте sink idempotency, если identity можно сохранить атомарно с эффектом, включая response. Exactly-once engine полезен, когда source/state/output поддерживают coordinated recovery, но не распространяется на произвольный HTTP side effect. Эти подходы сочетаются: engine уменьшает повторы в своей области, durable sink guard защищает business boundary.

INFERENCE: для Kafka→PostgreSQL wallet projection обычно проще доказать inbox/effect transaction, чем пытаться присоединить БД к Kafka transaction. Для Kafka→Kafka агрегации Kafka EOS может быть естественным contract. Ни один вариант не доказывает absence of semantic bugs в расчёте.

Иллюстративная схема решения

flowchart TD
 W[Workload and invariant] --> B[Define durable boundary]
 B --> F[Compare failure and recovery obligations]
 F --> L[Choose protocol for explicit scope]
 L --> T[Fault test and reconciliation]

Failure и recovery

Crash после sink commit требует повторного lookup в первом варианте; rollback checkpoint во втором требует replay и корректного sink commit protocol. При потере target storage оба требуют согласования restored source frontier и durable effect. Применяйте финансовую сверку независимо от выбора.

Практическое упражнение

Разберите A и C. Выпишите для каждого эффекта authority, identity, retention и доказательство recovery. Отметьте, какие условия являются NOT_RUN.

Связанные материалы и источники

Гарантии · Idempotency