[카프카] 리더, 팔로워와 리플리케이션(replication)

    카프카에서는 파티션 단위로 분산처리를 수행한다. 이 분산 처리를 할 때 핵심적인 기능이 바로 복제(Replication)이라 볼 수 있다. 분산 처리를 할 때에는 모든 브로커에 데이터를 동일하게 보내는 것이 아니라 Master -> Slave 방향으로 데이터를 복제하는 것처럼 카프카는 리더가 팔로워에 복제를 수행하게 된다.

     

    한마디로 Master는 Leader가 되고, Slave는 Follower로 되는 것과 같다. 

     

    위 그림처럼, 프로듀서는 리더에게 메시지(Message)를 전송하게 되고, 리더는 자신을 바라보는 팔로워에게 데이터를 복제한다. 그런데 위 그림으로만 보면 마치 복제를 할 때 토픽단위로 하는 것처럼 보이지만 사실 내부는 그리 단순하지 않는 것이 함정이다.

     

    복제(replication) 방식

    source,  https://jack-vanlightly.com/blog/2018/9/2/rabbitmq-vs-kafka-part-6-fault-tolerance-and-high-availability-with-kafka

    위 그림의 예시는 한개의 토픽이 어떻게 복제되는지를 설명하는 것인데 구성을 보면 4개의 파티션으로 되어 있고 복제는 3 즉, 총 3벌의 데이터셋을 나누어서 가지고 있다는 의미이다.

     

    파티션들은 어떤 브로커에서 리더가 될지는 모르며 리더의 선출을 주키퍼(하둡 세상에서는 주키퍼가 마치 대통령같은 권한을 가지고 있다)가 진행하게 된다. 하나의 브로커에 파티션을 몰아주지 않는 것은 데이터를 나눠서 저장을 해야 효율적이기 때문이다.

     

    아마도 위 구성에서 3번 브로커가 장애가 발생하면 리더였던 Partition 2는 Broker 1에게 전달해줄 가능성이 높을 것이다. 데이터의 효율을 위해서 파티션을 분배하는 것이 필요하기 때문이다. 

     

     

    댓글

    Designed by JB FACTORY