Apache Kafka 주요 요소4(Replication)

홍기대·2022년 4월 6일
0

🚩 Replication

  • Broker 에 장애가 발생하면, 장애가 발생한 Broker의 Parition들은 모두 사용할 수 없게 되는 문제가 발생
  • Producer가 Write하는 LOG-END-OFFSET과 Consumer Group의 Consumer가 Read하고 처리한 후에 Commit한 CURRENT-OFFSET과의 차이(Consumer Lag)가 발생할 수 있음.

  • 이를 해결하기 위해 Partition을 복제하여 다른 Broker상에서 복제물을 만들어서 장애를 미리 대비
  • Replicas - Leader Partition, Follower Partition으로 구성
  • Producer는 Leader에만 Write하고 Consumer는 Leader로부터만 Read함
  • Follow는 Broker 장애시 안정성을 제공하기 위해서만 존재하며 Leader의 Commit Log에서 데이터를 가져오기 요청(Fetch Request)으로 복제만함
  • Leader에 장애가 발생하면, Follower중 새로운 Leader를 선출
  • Clients(Producer/Consumer)는 자동으로 새 Leader로 전환

- Hot Spot 방지

  • 하나의 Broker에만 Partition의 Leader들이 몰려 있으면 특정 Broker에만 Client(Producer/Consumer)로 인해 부하가 집중
auto.leader.rebalance.enable: 기본값 enable
leader.imbalance.check.interval.seconds: 기본값 300sec
leader.imbalance.per.broker.percentage: 기본값 10

위와 같은 설정값을 통해 Partition Leader에 대한 자동 분산이 가능하다.

- Rack Awareness

  • 동일한 Rack 혹은 Abailable Zone상의 Broker들에 동일한 "rack name"지정
  • 복제본(Replica-Leader/Follower)은 최대한 Rack 간에 균형을 유지하며 Rack 장애 대비
  • Topic 생성시 또는 Auto Data Balancer/Self Balancing Cluster 동작 때만 실행
profile
열심히 살자

0개의 댓글