백앤드(Back-End)/Kafka

[Kafka] - Consumer 그룹 코디네이터

RyanSin 2024. 10. 30. 13:37
반응형

개요

안녕하세요. 이번 시간에 Consumer 그룹 코디네이터에 대해 알아보겠습니다.

 

Kafka Consumer 기본 개념에 대해 학습하고 오지 못하신 분들은 아래 링크를 통해 학습하고 오시는 걸 추천드리겠습니다.

[Kafka] - Kafka Consumer 메시지 소비

 

[Kafka] - Kafka Consumer 메시지 소비

개요안녕하세요. 이번 시간에는 Kafka Consumer의 대해 알아보겠습니다. 지난 시간에는 Kafka Producer의 대해 알아봤습니다. 혹시 놓치고 오신 분들은 꼭 학습을 하고 오시는 걸 추천드리겠습니다.[Kafk

any-ting.tistory.com

 

 

그룹 코디네이터

하나 또는 여러 개에 컨슈머는 하나의 컨슈머 그룹으로 구성됩니다. 컨슈머 그룹 내 컨슈머들은 언제든지 자신이 속한 컨슈머 그룹에서 떠날 수 있으며, 또한 새로운 컨슈머가 합류할 수 있습니다.

 

컨슈머 그룹에서 각 컨슈머들에게 작업을 균등하게 분해하는 동작을 컨슈머 리밸런싱(Consumer rebalancing)이라고 부릅니다.

컨슈머 리벨런싱을 지시하고 관리는 어떻게 할까요? 그건 바로 그룹 코디네이터(Group coordinator)가 관리합니다.

 

그룹 코디네이터의 목적은 컨슈머 그룹이 구독한 토픽의 파티션들과 그룹의 멤버들을 트래킹 하는 것입니다.

 

파티션 또는 컨슈머 그룹 멤버에 변화가 생기면, 작업을 균등하게 재배분하기 위해 컨슈머 리밸런싱 동작을 발생합니다. 

그룹 코디네이터는 카프카 클러스터 내의 브로커 중 하나에 위치합니다.

 

컨슈머 그룹과 그룹 코디네이터가 어떻게 상호작용 하는지 알아보겠습니다.

 

상호작용

 

  1. 최초 컨슈머 그룹은 서버가 실행될 때 bootstrap.brokers 리스트에 있는 주소를 통해 브로커에 커넥션 요청을 보냅니다. (Consumer -> Broker)
  2. 요청을 받은 브로커는 그룹 코디네이터를 생성하고 컨슈머에게 응답을 보냅니다. 컨슈머 그룹의 첫 번째 컨슈머가 등록될 때까지 아무 작업도 일어나지 않습니다. (Broker -> Consumer)
  3. 그룹 코디네이터는 group.initial.rebalance.delay.ms 설정 시간 동안 컨슈머의 요청을 기다립니다.
  4. 컨슈머는 컨슈머 등록 요청을 그룹 코디네이터에게 전송합니다. 여기서 가장 먼저 요청을 보낸 컨슈머가 리더가 됩니다.
    (Consumer -> Broker)
  5. 컨슈머 등록 요청을 받은 그룹 코디네이터는 해당 컨슈머 그룹이 구독하는 토픽 파티션 리스트 등 리더가 컨슈머의 요청에 응답을 보냅니다.(Broker -> Consumer)
  6. 리더 컨슈머는 정해진 컨슈머 파티션 할당 전략에 따라 그룹 내 컨슈머들에게 파티션을 할당한 뒤 그룹 코디네이터에게 전달합니다. (Consumer -> Broker)
  7. 그룹 코디네이터는 해당 정보를 캐시하고 각 그룹 내 컨슈머들에게 성공을 알립니다. (Broker -> Consumer)
  8. 각 컨슈머들은 각자 지정된 토픽 파티션으로부터 메시지들을 가져옵니다.

 

위와 같이 그룹 코디네이터는 컨슈머를 관리하는 중요한 역할을 합니다.

 

이번 시간에는 그룹 코디네이터에 대해 알아봤습니다. 어려운 개념이나 이해가 안가는 부분은 댓글을 남겨주세요.