컨슈머 그룹은 카프카의 개별 컨슈머 인스턴스들을 하나로 묶는 논리적 그룹 단위이다.
특정 컨슈머에 문제가 생기는 경우 동일 그룹 내의 다른 컨슈머가 계속해서 파티션에서 데이터를 읽을 수 있다.
예를 들어 위 그림에서 컨슈머 1에 장애가 발생하더라도, 동일 컨슈머 그룹 내의 2,3,4 컨슈머가 계속해서 읽을 수 있도록 리밸런싱이 된다. 카프카는 컨슈머 그룹 단위로 offset을 관리하기 때문이다.
아직 offset을 모르시는 분들을 위해 먼저 offset을 간단히 정리하면 아래와 같다.
위에 언급했던 것처럼 카프카는 컨슈머 그룹 단위로 offset을 관리한다.
이 그림에서 토픽 T1의 데이터를 컨슈머 그룹 G1과 G2에서 구독하고 있다.
토픽 T1에 들어있는 데이터는 G1과 G2가 각각 따로 수신하게 된다. G1이 수신했다고, G2가 수신하지 못하는 것이 아니다.
예를 들어 광고 관련 플랫폼에서 사용자의 클릭 정보를 제공하는 토픽이 있다고 가정해보자.
이 클릭 정보는 리포트 어플리케이션에서도 사용하고, 과금 애플리케이션에서도 사용한다.
리포트 어플리케이션에서 클릭 A의 정보를 수신했다고, 과금 애플리케이션에서 클릭 A의 정보를 받지 못하면 문제가 될 것이다. (리포트에는 집계되지만 과금에는 집계되지 않는..)
이럴 때 컨슈머 그룹을 리포트 컨슈머 그룹, 과금 컨슈머 그룹으로 분리해서 각각 따로 수신하는 것이다.
[flutter] 프로젝트 설정 & 기본 앱 만들어보기 (0) | 2020.06.07 |
---|---|
[android] AMD CPU에서 android emulator 설치시 4294967201 오류 해결하기 (3) | 2020.06.07 |
[kafka] consumer와 partition 의 이상적인 비율 (0) | 2020.03.31 |
[algorithm] LinkedHashMap - 순서를 유지하는 HashMap (0) | 2020.02.22 |
[algorithm] 순열(Permutation) 정리 (0) | 2020.01.26 |
댓글 영역