DevBoi

[Kafka] Broker의 역할 본문

Develop/[Kafka]

[Kafka] Broker의 역할

HiSmith 2023. 7. 18. 21:55
반응형

1) 컨트롤러

클러스터의 다수 브로커 중 한대가 컨트롤러의 역할을 한다.

컨트롤러는 다른 브로커들의 상태를 체크하고, 브로커가 클러스터에서 빠지는 경우 해당 브로커에 존재하는 리더 파티션을 재분배한다.

카프카는 지속적으로 데이터를 처리해야 하므로, 브로커의상태가 비정상이라면 빠르게 클러스터에서 빼내는 것이 중요하다.

만약 컨트롤러 역할을 하는 브로커에 장애가 생기면 다른 브로커가 컨트롤러 역할을 한다.

 

2) 데이터 삭제

카프카는 다른 메시징 플랫폼과 다르게 컨슈머가 데이터를 가져가더라도 토픽의 데이터가 삭제되지 않는다.

브로커가 데이터를 삭제하는데,  이 단위를 로그 세그먼트라고 부른다.

이 세그먼트에는 다수의 데이터가 들어가 있기 떄문에 일반적인 데이터베이스 처럼 특정 데이터를 선별해서 삭제할 수 없다.

컨슈머가 데이터 삭제를 요청할수도없다.

데이터 삭제는 브로커의 옵션, Compact,delete에 의해 해당 브로커가 메시지 큐에서  클린업, 삭제 작업을 진행한다.

 

3) 컨슈머 오프셋 저장

컨슈머 그룹은 토픽이 특정 파티션으로부터 데이터를 가져가서 처리하고, 이 파티션의 어느 레코드까지 가져갔는지

확인하기 위해 오프셋을 커밋한다.

커밋한 오프셋은 __consumer_offsets이라는 인터널 토픽이라는 곳에 저장된다.

자동생성되고 처리된다. 컨슈머 오프셋이라는 곳에 토픽을 커밋하는데

리스타트하거나, 처리가 끊겼을때, 컨슈머가 큐에서 몇번쨰까지 읽었는지, 어디서부터 읽으면 되는지를 알려주는 기능을 한다.

 

4) 그룹 코디네이터

코디네이터는 컨슈머 그룹의 상태를 체크하고 파티션을 컨슈머와 매칭되도록 분배하는 역할을 한다.

컨슈머가 컨슈머 그룹에서 빠지면 매칭되지않는 파티션을 정상 동작하는 다른 컨슈머로 할당해서 끊임없이 데이터가 처리되도록 도와준다.

이렇게 파티션을 컨슈머로 재할당하는 과정을 '리 밸런스' 라고 한다.

반응형

'Develop > [Kafka]' 카테고리의 다른 글

[Kafka] 세그먼트와 삭제 주기  (0) 2023.07.20
[Kafka] 브로커의 역할  (0) 2023.07.20
[Kafka]주키퍼 앙상블  (0) 2023.07.18
[Kafka] 브로커와 클러스터  (0) 2023.07.18
[Kafka] 카프카 생태계  (0) 2023.07.17