카프카 클러스터

김득회·2022년 9월 18일
0

Kafka

목록 보기
9/13

브로커들로 구성되어 있는 클러스터는 1개의 리더 브로커와 팔로워로 구성이 된다.
이 다수의 브로커들 중 하나가 컨트롤러 역할을 수행한다.

컨트롤러

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

컨트롤러 임무를 수행하는 브로커에 장애가 발생할 시 다른 브로커가 컨트롤러 역할을 대신 수행한다.

데이터 삭제

카프카는 컨슈머가 데이터를 가져가더라도 토픽의 데이터는 삭제되지 않는다.
프로듀서와 컨슈머가 데이터 삭제를 요청할 수 도 없고 오직 브로커만이 데이터 삭제를 할 수 있다.

데이터 삭제는 파일 단위로 이루어지며 이것을 로그 세그먼트라고 부른다.

로그 세그먼트에는 다수의 데이터가 들어가 있는데, 특정 데이터를 선택하여 삭제할 수 는 없다.
카프카 브로커에 설정된 log.segement.bytes, log.segement.ms 옵션에 따라 데이터 적재 상태가 변경되며
해당 옵션에 설정해 놓은 값이 될 때 까지 데이터를 계속 쌓다 삭제된다.
세그먼트 파일의 기본 적재 용량은 1GB이다.

컨슈머 오프셋

컨슈머 그룹은 토픽이 특정 파티션으로부터 데이터를 가져가서 처리하고, 해당 파티션이 어디 레코드까지 가져갔는지 확인하기 위해 오프셋을 커밋한다.

커밋한 오프셋은 __consumer_offsets 토픽에 저장한다. 이곳에 저장된 오프셋을 토대로 컨슈머 그룹은 다음 레코드를 가져가서 처리한다.

코디네이터

컨트롤러 임무를 수행하는 브로커이외에 다른 브로커들 중 하나는 코디네이터 임무를 수행한다.
코디네이터는 컨슈머 그룹의 상태를 체크하고 파티션을 컨슈머와 매칭되도록 분배하는 역할을 한다.
특정 컨슈머가 컨슈머 그룹에서 빠지면 매칭되지 않은 파티션을 정상동작하는 컨슈머로 할당하여 끊임없이 데이터가 처리되도록 도와준다.

파티션을 컨슈머로 재할당하는 과정을 리벨런싱이라고 한다.

profile
감성 프로그래머 HoduDeuk

0개의 댓글