티스토리 뷰
카프카 리플리케이션
카프카는 많은 데이터 파이프라인의 정중아에 위치하는 메인 허브 역할로 정상 동작 하지 않을시 심각한 문제
→ 안정성 확보를 위해 카프카 내부에서 리플리케이션 동작
리플리케이션 동작 개요
replication factor
- 카프카의 리플리케이션 동작을 위해 토픽 생성시 필수값
리더와 팔로워
리더
- 리플리케이션 중 하나가 선정되어 모든 읽기 쓰기는 리더를 통해서만 가능
- 프로듀서는 리더에게만 메시지 전송 / 컨슈머도 오직 리더로 부터 메시지 가져옴
팔로워
- 리더에 문제가 발생하거나 이슈가 있을 경우를 대비해 언제든지 새로운 리더가 될 준비
- 컨슈머가 토픽의 메시지를 꺼내 가는 것과 비슷하게 파티션의 리더가 새로운 메시지를 받았는지 확인하고, 새로운 메시지가 있다면 이를 리더로부터 복제
복제 유지와 커밋
ISR(InSyncReplica)
- 리더와 팔로워가 묶여있는 논리적 그룹
팔로워가 네트워크 오류, 브로커 장애 등 으로 리더로부터 리플리케이션 하지 못하는 경우 발생
→ 뒤처진 팔로워는 리더와 데이터 정합성/ 메시지 손실 문제로 리더를 넘겨 줄 수 없음
→ 잘 따라 잡는 팔로워들만 ISR에 속하고 리더 장애시 새로운 리더의 자격
⇒ 이를 판단하는 주체? 리더
- 리더 가 읽고 쓰는 동작은 물론, 팔로워가 리플리케이션 동작을 잘 수행하는지 판단
- 팔로워가 특정 주기 만큼 복제 요청을 하지 않으면 리더가 팔로워의 리플리케이션 문제가 있다고 판단해 ISR 그룹에서 추방
- 하이워터마크
- 마지막 커밋 오프셋 위치
- ISR내 모든 팔로워의 복제 완료시 리더는 내부적으로 커밋 표시
- 커밋 == 리플리케이션 팩터의 모든 리플리케이션이 모두 메시지를 저장했음
- 커밋된 메시지만 컨슈머가 읽어 감으로써 메시지의 일관성 유지 가능
- 커밋된 메시지 유지를 위해 로컬 디스크의 replication-offset-checkpoint 파일에 마지막 커밋 오프셋 유지
리더와 팔로워의 단계별 리플리케이션 동작
리더와 팔로워 간의 리플리케이션 동작 처리시 서로 통신 최소화하도록 설계됨
- fetch : 팔로워들이 리더에게 오프셋 메시지 가져오기 요청
- 리더는 팔로워들이 요청을 보낸 사실은 알고 있지만 오프셋에 대한 리플리케이션 동작 성공/실패 여부는 모름
- ↔ 래빗MQ : 모든 미러(팔로워)가 메시지를 받았느지에 대한 ACK를 리더에게 리턴함으로 리더는 미러들이 메시지를 받았는지 여부 앎
- 카프카는 ACK 통신 없어서 리플리케이션의 성능 높힘
- 리더는 n번째 오프셋 위치에 세로운 메시지를 프로듀서로 받은 후 저장하고 팔로워는 n-1번 오프셋에 대한 리플리케이션 동작을 마친 후 n 번째 오프셋에 대한 리플리케이션 요청
- 이에 대한 요청을 받은 리더는 n-1 오프셋에 대한 리플리케이션 동작이 성공했음을 인지하고, 오프셋 n-1에 대한 커밋 표시 후 하이워터마크를 증가 및 이에 대한 내용을 팔로워에게 응답
- 팔로워들이 Pull 하는 방식 이여서 빠르고 신뢰 가능하며 리더의 부하를 줄임
리더에포크
카프카의 파티션들이 복구 동작시 메시지의 일관성 유지
리플리케이션 프로토콜에 의해 전파, 새로운 리더 변경시 리더에 대한 정보는 팔로워에게 전파
복구시 하이워터마크 대체하는 역할
컨트롤러
리더 선출
ISR 리스트는 주키퍼에 저장
graceful 종료의 경우 다운타임 최소화 가능
로그(세그먼트)
카프카의 토픽으로 들어오는 메시지는 세그먼트라는 파일에 정해진 형식으로 저장
세그먼트 삭제와 컴팩션으로 로그 크기 관리
삭제
retention.ms 옵션
컴팩션
활성화된 세그먼트 제외
메시지값 기준으로 마지막 데이터만 보관
키 벨류 형식
예제 : _consumer_offset 토픽
ㄴ 컨슈머 그룹이 어디까지 읽었는지 나타내는 오프셋 커밋 정보
카프카로 메시지 전송시 키 값은 필수 아니지만 컴팩션 사용시에는 필수
빠른 장애 복구
컴팩션시 브로커에 과도한 입출력 발생 주의
출저 : 고승범 저, 실전 카프카 개발부터 운영까지, 책만, 4장. 카프카의 내부 동작 원리와 구현
- Total
- Today
- Yesterday
- 누출 버킷 알고리즘
- 이동 윈도우 로깅 알고리즘
- 개발자
- 고정 윈도우 카운터 알고리즘
- 처리율 제한 알고리즘
- 처리율제한
- 이동 윈도우 카운터 알고리즘
- 글또
- 회고
- 카카오프로젝트100
- 알고리즘
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |