상세 컨텐츠

본문 제목

[kafka] 카프카 컨슈머 그룹(consumer group) 이해하기

IT/프로그래밍

by James Lee. 2020. 3. 31. 18:30

본문

컨슈머 그룹(Consumer Group) 이란?

컨슈머 그룹은 카프카의 개별 컨슈머 인스턴스들을 하나로 묶는 논리적 그룹 단위이다.

왜 Consumer Group 을 사용하는가?

첫 번째, 장애 내성(Fail Over)

특정 컨슈머에 문제가 생기는 경우 동일 그룹 내의 다른 컨슈머가 계속해서 파티션에서 데이터를 읽을 수 있다. 

 

 

이미지 출처 : https://www.popit.kr/kafka-consumer-group/

 

예를 들어 위 그림에서 컨슈머 1에 장애가 발생하더라도, 동일 컨슈머 그룹 내의 2,3,4 컨슈머가 계속해서 읽을 수 있도록 리밸런싱이 된다. 카프카는 컨슈머 그룹 단위로 offset을 관리하기 때문이다. 

 

두 번째, Offset 관리

 

아직 offset을 모르시는 분들을 위해 먼저 offset을 간단히 정리하면 아래와 같다. 

 

오프셋(Offset) 이란?

 

이미지 출처 : https://devtimes.com/bigdata/2019/01/18/what-is-kafka/

 

  • 파티션 내에서 데이터의 위치를 표시하는 유니크한 숫자
  • consumer 는 자신이 어디까지 데이터를 가져갔는지 offset 을 이용하여 관리

 

위에 언급했던 것처럼 카프카는 컨슈머 그룹 단위로 offset을 관리한다. 

이 그림에서 토픽 T1의 데이터를 컨슈머 그룹 G1과 G2에서 구독하고 있다.

 

 

 

이미지 출처 : https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html#T1_four_partitions

 

 

토픽 T1에 들어있는 데이터는 G1과 G2가 각각 따로 수신하게 된다. G1이 수신했다고, G2가 수신하지 못하는 것이 아니다.

 

예를 들어 광고 관련 플랫폼에서 사용자의 클릭 정보를 제공하는 토픽이 있다고 가정해보자.

이 클릭 정보는 리포트 어플리케이션에서도 사용하고, 과금 애플리케이션에서도 사용한다.

 

리포트 어플리케이션에서 클릭 A의 정보를 수신했다고, 과금 애플리케이션에서 클릭 A의 정보를 받지 못하면 문제가 될 것이다. (리포트에는 집계되지만 과금에는 집계되지 않는..)

 

이럴 때 컨슈머 그룹을 리포트 컨슈머 그룹, 과금 컨슈머 그룹으로 분리해서 각각 따로 수신하는 것이다. 

 

참고 자료

 

카프카(Kafka)의 이해

개발자 노트

devtimes.com

 

Kafka 운영자가 말하는 Kafka Consumer Group | Popit

이번에는 Consumer Group이라는 주제를 가지고 설명하려고 합니다. 이 내용 역시 제가 처음 카프카를 접했을때, 정말 이해가 안되고 어려웠던 부분이었습니다. 컨슈머 그룹에 대해 국내 자료들을 검색했었는데, 안타깝게도 제가 이해하는데 도움이 될만한 글을 찾지 못하였습니다. 그래서, 제가 카프카를 처음 접하시는 분들이 컨슈머 그룹에 대한 개념을 잘 이해하실 수 있도록 간단한 예제와 그림을 추가하여 설명을 진행하도록 하겠습니다.

www.popit.kr

 

Kafka Consumer Architecture - Consumer Groups and Subscriptions - DZone Big Data

This installment in the Kafka series covers consumer architecture, consumer groups, how record processing is shared, and failover for Kafka consumers.

dzone.com

 

관련글 더보기

댓글 영역