[Kafka] Kafka broker, Zookeeper의 역할
Broker
- broker 는 상태를 저장하지 않는다 (stateless)
- 상태 정보
state
는 Zookeeper를 통해 관리
- producer 로부터 message 를 푸시받음
- consumer 는 broker로 부터 message를 읽음
리더(Leader)
- 하나의 토픽 파티션마다 존재하는 리더 broker 가 존재
- 0개 이상의 follower broker 를 가짐
Follower
- 리더 브로커를 복제하는 브로커
- 리더에 대한 백업으로 follower 를 구성
- 리더 broker 가 down되었을 시, zookeeper 에 의해 follower 브로커 중 하나가 새로운 리더 브로커로 선출
Controller
- 클러스터 중 broker 하나가 controller 역할을 함
- partition 관리를 책임지는 broker
- 리더 선정, topic 생성, partition 생성, 복제본 관리
- broker 의 상태 체크
- broker down 시 해당 broker 가 리더였던 partiton의 새 리더 선출
- 새로운 리더를 모든 브로커에 전달
Zookeeper 의 역할
Controller 선정
- controller 장애 발생시 새 controller 선출
broker, consumer 를 관리하는 역할
- broker 메타데이터 관리, 상태 정보 기록
- 새로운 broker 추가
- broker 장애 감지
- 파티션 leader broker 기록, leader 장애시 새 leader 선출
topic 메타데이터 관리
- partition 수, 특정 설정 파라미터 등 관리
클라이언트 할당(quota)
- topic 을 읽고 쓰는 클라이언트에 대한 바이트 비율의 임계값 관리
Topic ACLS (접근 제어 목록)
- 접근 제어 목록
Access Control Lists
- topic 에 대한 읽기, 쓰기 권한 종류 결정
클러스터 상태를 producer, consumer 에 통보
- Zookeeper 는 Kafka 기본 설치시 내장된 zookeeper를 사용해도 되고, 별도 zookeeper 클러스터를 이용할 수도 있음.