728x90
반응형
SMALL

In-Sync Replicas (ISR) 리스트 관리

n 개의 Replica가 있는 경우 n - 1 개의 장애를 허용할 수 있다.

 

만약, Follower가 문제가 발생한다면

  • Leader에 의해 ISR 리스트에서 삭제된다.
  • Leader는 새로운 ISR을 사용하여 계속 진행한다.

만약, Leader가 문제가 발생한다면

  • Controller는 Follower 중에서 새로운 Leader를 선출한다.
  • Controller는 새 Leader와 ISR 정보를 모든 Broker에 푸시한다.

  • Broker에 장애가 발생한다. 그 Broker는 Leader Partition을 가지고 있다.
  • Controller가 이를 감지하여 새로운 Leader를 선출한다. 그리고 새로운 ISR 리스트를 만들어낸다.
  • 모든 Broker에게 새로운 ISR을 Push한다.
  • 클라이언트들은 메타데이터를 요청하여 새로운 Leader 정보를 받은 후, 해당 Leader에 메시지를 읽고, 쓴다.

 

  • Broker 4대,Partition 4, Replication Factor 3(Leader, Follower의 총 수가 3)인 경우,
  • Partition 생성 시 Broker들 사이에서 Partition들이 분산되어 배치된다.
  • 이때, Broker 4에 장애가 발생하면?

  • Broker 4에 있는 Follower의 경우, Leader들이 해당 Follower를 제거하고 새로운 ISR을 만들어 계속해서 아무일 없다는 듯이 진행한다.
  • 그런데 Partition 3의 경우 Leader가 고장난 상태가 된다. Leader가 새로 선출되어야 한다.
  • Partition에 Leader가 없으면 Leader가 선출될 때까지 해당 Partition을 사용할 수 없게 된다.
  • Producer의 send()는 retries 파라미터가 설정되어 있으면 재시도하고, 만약 retries = 0이면, NetworkException이 발생한다.
  • 즉, Leader가 장애가 발생하면 해당 Partition을 사용할 수 없게 되므로 크나큰 문제가 될 수 있다.

 

정리를 하자면

  • Follower가 실패하는 경우, Leader에 의해 ISR 리스트에서 삭제되고, Leader는 새로운 ISR을 사용하여 Commit한다.
  • Leader가 실패하는 경우, Controller는 Follower중에서 새로운 Leader를 선출하고, Controller는 새 Leader와 ISR 정보를 모든 Broker들에게 로컬 캐싱을 위해 알린다.
  • Leader가 장애가 나면, 새로운 Leader가 선출될 때까지 해당 Partition을 사용할 수 없게 된다.

 

728x90
반응형
LIST

'Apache Kafka' 카테고리의 다른 글

p10. Consumer Rebalance  (0) 2025.03.16
p9. Replica Recovery  (0) 2025.03.16
p7. Acks, Batch, Page Cache, Flush  (0) 2025.03.15
p6. Replication  (0) 2025.03.15
p5. Consumer  (0) 2025.03.15

+ Recent posts