-
Kafka - ReplicationFramework & 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