컨슈머 파티션 할당 전략
파티션 할당 전략 | 설명 | rebalancing protocol |
레인지 파티션 할당 전략 | 파티션 할당 전략의 기본값으로서 토픽별로 할당 전략을 사용함 동일한 키를 이용하는 2개 이상의 토픽을 컨슘할 때 유용함 |
EAGER |
라운드 로빈 파티션 할당 전략 | 사용 가능한 파티션과 컨슈머들을 라운드 로빈으로 할당함. 균등한 분배 가능 | EAGER |
스티키 파티션 할당 전략 | 컨슈머가 컨슘하고 있는 파티션을 계속 유지할 수 있음 | EAGER |
협력적 스티키 파티션 할당 전략 | 스티키 방식과 유사하지만, 전체 일시 정지가 아닌 연속적인 재조정 방식임 | COOPERATICE |
1.레인지 파티션 할당 전략
이 전략은 먼저 구독하는 토픽에 대한 파티션을 순서대로 나열한 후, 컨슈머를 순서대로 정렬함
그런 다음 각 컨슈머가 몇 개의 파티션을 할당해야 하는지 전체 파티션 수를 컨슈머 수로 나눔
컨슈머 수와 파티션 수가 일치하면 균등하게 할당될 수 있지만 균등하게 나눠지지 않는 경우에는 앞쪽의 컨슈머들은 추가 파티션을 할당 받게됨
파티션 0,1,2 순서대로 정렬한 후, 컨슈머를 컨슈머 1,2 순서대로 정렬한 뒤 전체 파티션 수(3)를 전체 컨슈머 수(2)로 나눔
3에서 2를 나눈 결과로 컨슈머당 최소 하나의 파티션을 가져야 함. 하지만 균등하게 나눠지지 않았으므로 먼저 정렬된 컨슈머인 컨슈머1에 남은 파티션을 추가 할당함
두 번째 토픽도 이와 동일한 방법으로 파티션을 할당함
이 할당 전략은 동일한 레코드(메시지) 키를 사용하고 하나의 컨슈머 그룹이 동일한 파티션 수를 가진 2개 이상의 토픽을 컨슘할 때 유용함
ex) 토픽 1의 0번 파티션은 프로듀서가 보내는 레코드의 키값 abc에 의해 기록된다고 가정하고, 토픽 2의 0번 파티션 역시 프로듀서가 보내는 레코드의 키값 abc에 의해 기록된다고 가정
레인지 파티션 할당 전략을 적용할 경우,
컨슈머 1에는 토픽 1의 0번 파티션과 토픽2의 0번 파티션이 동시에 할당되어 두 토픽의 0번 파티션을 컨슈머 1이 모두 컨슘하게 됨
결과적으로 동일한 키값 abc를 갖고 있는 두 토픽의 파티션을 하나의 컨슈머가 컨슘하는 것.
컨슈머에 균등하게 파티션이 분배되지 않으므로 컨슈머 그룹은 불균형한 상태로 운영될 수 있다는 점 유의
2. 라운드 로빈 파티션 할당 전략
하나씩 번갈아 가면서 컨슈머를 할당함
순서대로 나열된 파티션들에는 차례대로 먼저 컨슈머1이 매핑되고 그다음 파티션은 컨슈머2가 매핑되는 방식
컨슈머1과 컨슈머2가 계속 반복되면서 매핑됨
따라서 레인지 파티션 할당 전략에 비해 라운드 로빈 파티션 할당 전략 쪽이 파티션과 컨슈머를 더욱 균등하게 매핑함
3. 스티키 파티션 할당 전략
재할당 작업이 발생하더라도 기존에 매핑됐던 파티션과 컨슈머를 최대한 유지하려고 하는 전략
목적
1) 가능한 균형 잡힌 파티션 할당
2) 재할당이 발생할 떄 되도록 기존의 할당된 파티션 정보를 보장하는 것
(첫 번 째 목적이 우선순위가 더 높음)
스티키 할당 전략이라고 해서 무조건 기존의 파티션과 컨슈머를 유지하지는 않음!
최대한 컨슈머를 균등하게 분배하는 것을 우선하므로 일부 파티션은 기존의 컨슈머와 매핑을 유지하지 못하고 새로운 컨슈머와 연결될 수도 있음
![]() |
![]() |
1, 컨슈머2가 컨슈머 그룹에서 떠남 2. 리밸런싱 동작이 일어남 3. 모든 파티션을 순서대로 배치 (토픽1-파티션0, 토픽1-파티션1, 토픽2-파티션0, 토픽2파티션1, ⋯ ) 4. 모든 컨슈머를 순서대로 배치(컨슈머1, 컨슈머3) 5. 라운드 로빈 파티션 할당 전략에 맞춰 하나씩 매핑 → 열심히 일하던 컨슈머1과 컨슈머3에 할당됐던 파티션 연결은 끊기고 컨슈머 그룹의 리밸런싱으로 인해 새로운 파티션에 할당되는 일이 발생 |
기존 컨슈머 1과 컨슈머 3에 할당됐던 파티션들은 모두 유지한 채, 컨슈머 2에 할당된 파티션들만 컨슈머 1과 컨슈머 3에 각각 할당됨 컨슈머 1과 컨슈머3에 이미 할당된 파티션은 유지되고 컨슈머가 할당되지 않은 파티션들에 대해서만 컨슈머 1과 컨슈머3에 할당됨 → 라운드 로빈 할당 전략보다 효율 |
리밸런싱시 모든 파티션이 취소됨
이유 :
1) 컨슈머들의 파티션 소유권 변경 때문
2) 그룹 내에서 여러 파티션들에 대해 소유권 변경 작업(새로운 파티션 할당 작업)이 동시에 이뤄져야 함
4. 협력적 스티키 파티션 할당 전략
되도록 동작 중인 컨슈머들에게 영향을 주지 않는 상태에서 몇 차례에 걸쳐 리밸런싱이 이뤄짐
COOPERATIVE 프로토콜을 사용하여 리밸런싱이 필요한 특정 파티션에만 집중하며 그 외의 나머지 파티션들은 컨슈머와 매핑을 그대로 유지함
문제가 있는 파티션의 메시지 컨슈밍만 중단될 뿐 이외의 파티션은 모두 정삭적으로 메시지 컨슈밍이 동작 → 전체적인 데이터 처리 성능을 저해하지 않으며 컨슈머의 확장 및 축소, 롤링 재식작 등의 리밸런싱에 대한 부담 감소