advanced

Kafka ordering guarantees

Rely on order только within partition и проектируйте keys, retries, concurrency и reprocessing around that constraint.

Порядок гарантирован только внутри одной partition. Между partitions порядок не определён. Producers должны использовать один key для related events; consumers не должны parallelize processing одного key между threads, если порядок важен.

Компромисс: global ordering требует одну partition — лимит throughput; per-key ordering масштабируется с распределением keys.

На интервью: порядок login затем logout для одного user; почему retries могут reorder без idempotent sequence handling.

Типовые ошибки: разные keys для одной entity; consumer thread pool ломает partition order; reprocessing со старого offset перемешивается с новыми events.

Чеклист:

  • Один key для causally related events.
  • Один in-flight handler per partition или per key.
  • Проектируйте out-of-order между services в любом случае.
  • Тест reorder scenarios при retries.