본 포스팅은 패스트캠퍼스 환급 챌린지 참여를 위해 작성하였습니다.
https://bit.ly/4hTSJNB
I. 학습 인증샷 4장 이상 포함
1. 공부시작: 날짜, 시각 다 나오도록
2. 공부 종료: 날짜 시각 다 나오도록
3. 1개 클립 수강 (강의장 목록 캡쳐, 수강화면이 보이지 않도록) 1장
4. 학습 인증샷 1장(필기 촬영이나 작업물 촬영)
II. 학습 후기 700자 이상 (공백 제외)
이번 강의는 지난 번의 Replicationrhk 연관된 ISR에 대한 내용이다.. (아마도.. 너무 어렵다..)
요약 (앞 강의랑 연관이 되서 개념 정리부터 ..)
Partition Replication 구조
- Leader Partition: 모든 읽기 쓰기 작업 처리
- Follower Partition: Leader의 Data를 비동기적으로 복제
- ISR
- In-Sync Replicas
- 장애 복구를 위해 리더와 팔로워 파티션이 동기화된 상태를 유지하는 메커니즘
- High Water Mark 까지 동기화가 완료된 Replication Group
- Leader 장애시 새로운 Leader를 선출하는데 사용
- 고가용성을 보장
ISR 옵션
- `replica.lag.max.messages`
- 해당 옵션의 수까지의 차이가 벌어지지 않은 Follower와 Leader를 ISR로
- 문제점 : 메시지 유입량이 갑자기 늘어날 때
- 예시 : 평상시 초당 3메세지 이하의 부하에 옵션은 5일때
- 갑자기 초당 10메세지 이상인 경우 Follower는 Peek에 의한 잠깐 지연이 있을 뿐 정상 작동
- 하지만 Peek에 이한 지연으로 5이상 차이가 나면 OSR로 잘못 판단하게 되어버림
- 운영중에 불필요한 에러 발생과 그로 인해 불필요한 Retry가 유발된다
- `replica.lag.time.max.ms`
- 사실상 유일한 옵션
- 기본값 10초
- Follower가 Leader로 Fetch 요청을 보내는 인터벌을 체크하고 Follower의 지연 시간을 판단한다.
- 기본값인 경우 Follower가 Leader로 Fetch 요청을 10초(10000ms)내에만 요청하면 정상으로 판단
- 벗어나면 ISR에서 제외 → OSR(Out-of-Sync Replica) 상태 전환
- 컨트롤러가 주키퍼를 통해 ISR 목록 실시간 갱신
컨트롤러(Controller)
- 카프카 클러스터의 브로커 중 하나가 컨트롤러가 된다
- 컨트롤러는 ZooKeeper를 통해 Broker Liveness(죽었는지 살았는지)를 모니터링 한다.
(그럼 4.2 부터 쓰는 ZooKeeper를 안쓰는 모드에서는 어떻게 하지? - 컨트롤러나는 리더와 Replica 정보를 클러스터 내의 다른 브로커에게 전달
- 컨트롤러는 ZooKeeper에 Replicas 정보를 유지한 다음
더 빠른 엑세스를 위해 클러스터의 모든 브로커들에게 동일한 정보를 캐시함 - 컨트롤러가 리더 장애시 Leader Election 수행
- 컨트롤러가 장애가 난다면?
- 다른 Active 브로커중에서 재선출
- ZooKeeper가 하게 됨
- Message Commit 과정
- 프로듀서가 리더에 메시지 전송(Log End Offset 증가
- 팔로워의 Fetcher 스레드가 주기적으로 데이터 가져옴
- 모든 ISR 구성원이 메시지 수신 시 High Water Mark 이동
- 커밋된 메시지만 컨슈머가 읽을 수 있음
- 어제 후기 쓸때 딱 궁금해한 ... 그럼 Leader는 어떻게 뽑는가에 대한 답변이다.
- 개념이 생각보다 어렵다...
- 어제는..DB Replica의 개념에서 그냥 복제본을 더 여러개 만드는 정도로 이해했었는데.. 너무 단순하게 생각...
- 실제로는 리더와 팔로워 간의 실시간 동기화 상태를 추적하고 장애 시 빠르게 대응하는 정교한 원리가 숨어있다.
- 특히 메시지 랙의 문제점과 그 해결책으로 `replica.lag.time.max.ms` 설정을 통해
네트워크 지연을 유연하게 처리하는 부분이 들어온다. - 강사님이 천천히 설명을 해주는데 진짜 머리에 안들어온다.
진짜 강의 공유자료인 슬라이드의 그림이 없었다면..아직도 이해를 못했을 듯 - 강의 슬라이드에서 커밋 메시지 과정은 정말 하나하나 슬라이드를 나눠주셔서
커밋된 메시지와 아직 복제 중인 메시지를 시각적으로 구분하는 방식이 머릿속에 잘 정리되더라. - 컨슈머가 항상 안전한 데이터만 읽을 수 있도록 보장하는 메커니즘이 녹아 있다.
- 카프카가 복잡한 문제들을 해결하는 것을 알게 되고 학습하게 된건 좋은데 계속 분산 시스템의 복잡성을 더 느끼게 된다.
- 지금 이해 단계인데 따라가기가 버겁다... 과연 내가 따라갈 수 있을 것인가...
'패캠챌린지 > Kafka EcoSystem - 진행중' 카테고리의 다른 글
패스트캠퍼스 환급챌린지 13일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.17 |
---|---|
패스트캠퍼스 환급챌린지 12일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.16 |
패스트캠퍼스 환급챌린지 10일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.14 |
패스트캠퍼스 환급챌린지 9일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.13 |
패스트캠퍼스 환급챌린지 8일차 : 한번에 끝내는 KafkaEcosystem 강의 후기 (0) | 2025.03.12 |