ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • Kafka - Replication
    Framework & Library/Kafka 2023. 2. 20. 10:45

    Replication

    Broker의 장애 발생

     

     - Broker에 장애가 발생하면, 장애가 발생한 Broker의 Partition들은 모두 사용할 수 없게 된다.

     - Partition을 사용할 수 없기 때문에, Producer는 메시지를 보낼 수 없게 되고 Consumer는 메시지를 받아갈 수 없는 상황이 발생한다.

     

     

     - Broker에서 장애가 발생하면 장애가 발생한 Partition을 대신해서 기존의 Broker 내에 새로운 Partition을 만들어 장애를 해결하는 것은 어떨까?

     - Partition을 새로 생성한다는 것은 기존의 메시지와 Offset 정보를 버린다는 의미이기 때문에, 큰 문제가 발생한다.

     - 위와 같은 문제를 해결하기 위해 나온 것이 Replication이다.

     

    Replication

     

     - Replication은 Partition을 복제하여, 다른 Broker 상에서 복제물을 만들어서 장애를 미리 대비하기 위한 기술이다.

     - Producer가 특정 Partition에 메시지를 전송하면, 곧바로 다른 Partition으로 메시지를 복제하는 방식이다.

     - 1개의 Partition에 장애가 발생하더라도, 다른 2개의 Partition으로 대체가 가능하기 때문에, 정상적으로 작동할 수 있는 것이다.

     - Leader Partition : 기존의 원본 데이터를 보유하고 있는 Partition

     - Follower Partition : 데이터를 복제해 가는 Partition

     - Replication Factor : Leader Partition 개수 + Follower Partition 개수

     

     

     - Producer는 Leader에만 Write라고, Consumer는 Leader로부터만 Read 한다.

     - Follower는 Broker 장애 시 안정성을 제공하기 위해서만 존재한다.

     - Follower는 Leader의 Commit Log에서 데이터를 가져오기 요청(Fetch Request)으로 복제한다.

     

    Leader의 장애 발생

     

     - Leader에 장애가 발생하면, Kafka 클러스터는 Follower 중에서 새로운 Leader를 선출한다.

     - Producer와 Consumer는 자동으로 새 Leader로 전환하여, 메시지를 전송하거나 메시지를 전달받을 수 있다.

     

    Partition Leader에 대한 자동 분산

     

     - 하나의 Broker에만 Partition의 Leader들이 몰려 있는 경우, 해당 Broker에만 Producer와 Consumer들이 작업을 진행하기 때문에 부하가 집중된다.

     - 위와 같은 Hot Spot을 방지하기 위한 여러 가지 옵션이 존재한다.

     

     

     - auto.leader.rebalance.enable : 자동으로 Leader에 대한 불균형이 있는지 확인

     - leader.imbalance.check.interval.seconds : 300초(기본값)마다 Leader에 대한 불균형이 있는지 확인

     - leader.imbalance.per.broker.percentage : 다른 Broker보다 10%(기본값) 이상 데이터를 처리 작업이 진행되면 불균형으로 판단

     

    최종 정리

     - Kafka는 Partition을 복제하여 다른 Broker 상에 복제물을 만들어 장애를 미리 대비한다.

     - 기존의 원본 데이터를 보유하고 있는 Leader와 원본 데이터를 복제해 가는 Follower가 존재한다.

     - Producer는 Leader에만 Write 하고, Consumer는 Leader로부터만 Read 한다.


    출처

     https://fastcampus.co.kr/dev_online_kafka

     

    728x90

    'Framework & Library > Kafka' 카테고리의 다른 글

    Kafka - In-Sync-Replicas  (0) 2023.02.20
    Kafka 기초 - Consumer  (0) 2023.02.18
    Kafka 기초 - Producer  (0) 2023.02.18
    Kafka 기초 - Broker, Zookeeper  (0) 2023.02.18
    Kafka 기초 - Topic, Partition, Segment  (0) 2023.02.17

    댓글

Designed by Tistory.