컨슈머 그룹 (Consumer Group)
컨슈머 그룹은 여러 컨슈머가 한 토픽을 나눠 읽는 단위입니다. 파티션 하나는 그룹 안에서 정확히 컨슈머 하나에게만 배정되므로, 컨슈머를 늘리면 처리량이 올라가지만 파티션 수를 넘어서면 남는 컨슈머는 놀게 됩니다. 각 컨슈머는 자기가 맡은 파티션의 오프셋을 커밋하고, 그룹이 다르면 같은 데이터를 서로 독립적으로 읽습니다.
01 개념 한눈에 보기
Interactive Step-by-Step파티션 셋에 레코드가 쌓여 있습니다. 이제 이 로그를 누가 어떻게 나눠 읽는지 봅니다.
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)를 쉽게 비유하면?+
창고의 통로를 직원들이 나눠 맡는 것과 같습니다. 통로 하나에 직원 한 명이면 충돌이 없고, 직원이 통로보다 많으면 남는 사람은 할 일이 없습니다. 다른 팀(다른 그룹)이 들어와도 같은 통로를 자기들 진도대로 다시 훑을 수 있습니다.
