##Kafka - 카프카 브로커의 이해
- 카프카 클러스터 내에 존재하는 서버
- 카프카 클라이언트와 데이터를 주고받는 주체
- 데이터를 분산 저장, 복제
- 기본 3대 이상의 브러코 서버를 1개의 클러스터로 관리
- 프로듀서로부터 데이터를 받으면 토픽의 파티션에 데이터를 저장
- 파일시스템에 저장함
- 파일시스템에 저장하므로 File I/O로 인해 속도 이슈 발생 가능
- Page Cache를 통해 디스크 입출력 속도를 높임
- 컨슈머가 데이터 요청 시, 파티션에 저장된 데이터를 전달
* Page Cache(페이지 캐시) :
파일 입출력 성능 향상을 위해 OS에 만든 메모리 영역
읽은 파일 내용은 이 캐시에 저장하고, 동일 파일을 다루면 캐시 메모리에서 직접 읽음
이 때문에 힙 메모리 사이즈를 크게 설정하지 않아도 됨
- 데이터 복제를 통해 고가용성 달성
- 장애 허용 시스템
- 카프카의 데이터 복제는 파티션 단위로 함
- Replication Factor 설정
- 리더 팔로워 방식
- 팔로워는 리더 파티션 오프셋 확인, 차이가 나면 리더로부터 가져와 저장
- 2이상 replication factor 설정을 권장
- 카프카 컨슈머나 프로듀서는 데이터 삭제 불가능
- 오직 브로커에서만 데이터 삭제가 가능함
- 데이터 삭제는 파일 단위로 이루어짐
- 해당 파일 단위가 로그 세그먼트 (log segment)
- 카프카 브로커에 log.segment.bytes 또는 log.segment.ms 옵션에 값이 설정되면 세그먼트 파일이 닫힘
- 닫힌 세그먼트 파일은 log.retention.bytes 또는 log.retention.ms 옵션에 설정 값이 넘으면 삭제됨
- 브로커의 health 체크
- FailVoer 과정 , Leader 선정
- 컨트롤러 역할을 하는 브로커에 장애가 발생하면 다른 브로커가 이 역할을 맡음
- 컨슈머 그룹 상태 체크
- 파티션과 컨슈머의 매칭, 분배 설정
- 리밸런싱
컨슈머가 컨슈머 그룹에서 빠지게 되면 매칭되지 않은 파티션을 다른 컨슈머로 할당