3.1 카프카 브로커, 클러스터, 주키퍼
카프카 브로커/클러스터/주키퍼
데이터를 안전하게 보관하고 처리하기 위해 3대 이상의 브로커 서버를 1개의 클러스터로 묶어서 운영.
데이터 저장, 전송
프로듀서가 요청한 토픽의 파티션에 데이터 저장.(파일 시스템).
컨슈머가 요청하면 파티션에 저장된 데이터 전달.
카프카는 데이터를 파일 시스템에 저장한다.
페이지 캐시(메모리 영역)를 사용하여 디스크 입출력 속도 향상.
한번 읽은 파일의 내용은 메모리의 페이지 캐시 영역에 저장. 동일한 파일 접근은 메모리에서 읽음.
데이터 복제, 싱크
카프카의 데이터 복제는 파티션 단위.
복제된 파티션은 리더(leader)와 팔로워(Follower)로 구성.
리더 파티션 : 프로듀서 또는 컨슈머와 직접 통신하는 파티션.
팔로워 파티션 : 나머지 복제 데이터를 가지고 있는 파티션.
복제(replica) : 리더 파티션의 오프셋을 확인하여 자신의 오프셋과 차이가 나는 경우 리더 파티션으로 부터 데이터를 가져오는 과정.
리더 파티션이 사용할 수 없는 경우 팔로워 파티션 중 하나가 지위를 넘겨받는다.
컨트롤러(Controller)
클러스터의 다수 브로커 중 한 대가 컨트롤러의 역할을 한다.
컨트롤러는 다른 브로커들의 상태를 체크하고 브로커가 클러스터에서 빠지는 경우 해당 브로커에 존재하는 리더 파티션을 재분배한다.
컨트롤러 역할의 브로커에 장애가 생기는 경우 다른 브로커가 컨트롤러 역할을 한다.
데이터 삭제
컨슈머가 데이터를 가져가도 토픽의 데이터는 삭제되지 않는다.
컨슈머나 프로듀서가 데이터 삭제를 요청 할 수 없다.(브로커만 데이터 삭제 가능)
로그 세그먼트(log segment) : 데이터 삭제의 파일 단위
세그먼트 파일이 닫히는 기본값 : 1GB
닫힌 세그먼트 파일 삭제 관련 옵션 : log.retention.bytes or log.retension.ms
닫힌 세그먼트 파일 체크 간격 옵션 : log.retention.check.interval.ms
컨슈머 오프셋 저장
파티션의 어느 레드까지 가져갔는지 확인하기 위해 오프셋을 커밋.
커밋한 오프셋은 --consumer_offsets 토픽에 저장
코디네이터(Coordinator)
코디네이터 : 컨슈머 그룹의 상태를 체크하고 파티션을 컨슈머와 매칭되도록 분배하는 역할.
리밸런스(rebalance) : 파티션을 컨슈머로 재할당.
클러스터의 다수 브로커 중 한 대는 코디네이터의 역할을 수행
컨슈머가 컨슈머 그룹에서 빠지면 매칭되지 않은 파티션을 정상 동작하는 컨슈머로 할당하여 끊임없이 데이터 처리.
참고
주키퍼
카프카의 메타데이터를 관리하는데 사용
카프카 클러스터로 묶인 브로커들은 동일한 경로의 주키퍼 경로로 선언해야
같은 카프카 브로커 묶음이 된다.
znode : 주키퍼에서 사용되는 저장 단위(znode간 계층 구조로, 트리 구조를 가질 수 있다.)
주키퍼에서 다수의 카프카 클러스터 사용은 서로 다른 znode에 카프카 클러스터들을 설정.
Last updated