Kafka는 partition 내에서는 순서를 보장하지만 partition 간에는 보장하지 않습니다 — 결정적인 개념. 관련 이벤트의 순서를 얻으려면 같은 partition으로(같은 key를 통해) 라우팅합니다. 순서를 이해하는 것은 정확성에 중요합니다.
partition별 순서
Kafka는 보장:
✓ partition 내 순서 → partition 내 이벤트는 엄격히 순서(offset 기준);
consumer가 순서대로 읽음
✗ partition 간 순서 없음 → 다른 partition의 이벤트는 상대적 순서 보장 없음
(다른 consumer가 병렬로 처리)
→ 이는 FUNDAMENTAL Kafka 속성(그리고 흔한 오해의 원천)
관련 이벤트의 순서 얻기
관련 이벤트의 순서를 유지하려면 → 같은 partition으로 전송:
→ 관련 이벤트에 같은 KEY 사용(key → hash → 같은 partition):
예: orderId=5의 모든 이벤트는 key=5 사용 → 같은 partition → 그 주문의 순서 유지
→ 따라서 엔티티별 순서: 엔티티로 key(userId, orderId, accountId)
→ 순서가 필요한 이벤트가 partition을 공유하도록 key 선택
