Oh My Algorithm
Concept Guide파티션 배정 · 병렬 소비

컨슈머 그룹 (Consumer Group)

컨슈머 그룹은 여러 컨슈머가 한 토픽을 나눠 읽는 단위입니다. 파티션 하나는 그룹 안에서 정확히 컨슈머 하나에게만 배정되므로, 컨슈머를 늘리면 처리량이 올라가지만 파티션 수를 넘어서면 남는 컨슈머는 놀게 됩니다. 각 컨슈머는 자기가 맡은 파티션의 오프셋을 커밋하고, 그룹이 다르면 같은 데이터를 서로 독립적으로 읽습니다.

01 개념 한눈에 보기

Interactive Step-by-Step
컨슈머 그룹 · 파티션 배정과 오프셋
Partition 0
e1
0
e4
1
e7
2
e9
3
4
5
Partition 1
e2
0
e5
1
e8
2
3
4
5
Partition 2
e3
0
e6
1
2
3
4
5

파티션 셋에 레코드가 쌓여 있습니다. 이제 이 로그를 누가 어떻게 나눠 읽는지 봅니다.

Logic Node1 / 11

02 쉽게 이해하기

For Everyone
🔑비유

창고의 통로를 직원들이 나눠 맡는 것과 같습니다. 통로 하나에 직원 한 명이면 충돌이 없고, 직원이 통로보다 많으면 남는 사람은 할 일이 없습니다. 다른 팀(다른 그룹)이 들어와도 같은 통로를 자기들 진도대로 다시 훑을 수 있습니다.

💡쉽게 말하면

그룹 안에서 파티션은 컨슈머에게 배타적으로 배정됩니다.

그래서 파티션 수가 그룹의 병렬성 상한이 됩니다.

각 컨슈머는 처리한 위치를 오프셋으로 커밋해 두고, 다시 시작하면 그 지점부터 이어 읽습니다.

컨슈머가 들어오거나 빠지면 리밸런싱이 일어나 배정이 다시 계산되는데, 그동안 소비가 잠깐 멈춥니다.

그룹 ID가 다르면 서로 간섭하지 않고 같은 로그를 각자의 오프셋으로 읽습니다.

📍어디에 쓰나
  • 컨슈머 수와 파티션 수 맞추기
  • 처리량 스케일아웃 설계
  • 오프셋 커밋 전략(at-least-once vs at-most-once)
  • 같은 데이터를 여러 용도로 소비하기

03 자주 묻는 질문

FAQ
컨슈머 그룹 (Consumer Group)란 무엇인가요?+

컨슈머 그룹은 여러 컨슈머가 한 토픽을 나눠 읽는 단위입니다. 파티션 하나는 그룹 안에서 정확히 컨슈머 하나에게만 배정되므로, 컨슈머를 늘리면 처리량이 올라가지만 파티션 수를 넘어서면 남는 컨슈머는 놀게 됩니다. 각 컨슈머는 자기가 맡은 파티션의 오프셋을 커밋하고, 그룹이 다르면 같은 데이터를 서로 독립적으로 읽습니다.

컨슈머 그룹 (Consumer Group)은(는) 어디에 사용하나요?+

컨슈머 수와 파티션 수 맞추기, 처리량 스케일아웃 설계, 오프셋 커밋 전략(at-least-once vs at-most-once), 같은 데이터를 여러 용도로 소비하기

컨슈머 그룹 (Consumer Group)를 쉽게 비유하면?+

창고의 통로를 직원들이 나눠 맡는 것과 같습니다. 통로 하나에 직원 한 명이면 충돌이 없고, 직원이 통로보다 많으면 남는 사람은 할 일이 없습니다. 다른 팀(다른 그룹)이 들어와도 같은 통로를 자기들 진도대로 다시 훑을 수 있습니다.

Guide Progress0%