Partition
Partition 주제의 핵심 개념과 적용 포인트를 정리합니다.
Partition
key의 역할
ProducerRecord에서 topic과 value는 필수고 key는 선택이다.
하지만 실무에서는 key가 매우 중요하다. key는 단순 부가정보가 아니라 파티션 결정 로직에 직접 관여하기 때문이다.
key를 사용하면 동일 key는 동일 파티션으로 매핑되어, 같은 엔티티 단위의 이벤트 순서를 안정적으로 유지할 수 있다.
key가 없을 때
key가 null이면 기본 파티셔너는 가용 파티션에 균등하게 분배하려고 시도한다.
목적은 특정 파티션 쏠림을 방지하고 전체 처리량을 고르게 확보하는 것이다.
다만 이 경우 같은 비즈니스 엔티티 이벤트가 여러 파티션으로 흩어질 수 있어, 엔티티 단위 순서 보장은 어렵다.
key가 있을 때
key가 있으면 파티셔너는 key 해시를 이용해 파티션을 선택한다.
따라서 동일 key는 동일 파티션으로 들어가고, 그 파티션 내에서 순서가 보장된다.
주의할 점은 토픽 파티션 수가 바뀌면 매핑 결과가 달라질 수 있다는 것이다.
즉, key 기반 라우팅 전략을 사용하는 토픽은 파티션 증설 시 영향도를 반드시 검토해야 한다.
실무 포인트
- 사용자 ID, 주문 ID 같은 도메인 키를 잘 선택하면 정합성 있는 순차 처리가 쉬워진다.
- 반대로 특정 key로 트래픽이 몰리면 hot partition 문제가 생길 수 있다.
- 순서 보장과 부하 분산 사이에서 균형 잡힌 key 설계가 필요하다.
This post is licensed under CC BY 4.0 by the author.