[Kafka] Replication

Replication

카프카는 분산 어플리케이션으로 서버의 물리적 장애가 발생하는 경우에도 높은 가용성을 보장하기 위해 리플리케이션을 제공한다. 리플리케이션은 토픽 자체를 리플리케이션하는게 아니라 토픽을 이루는 각각의 파티션을 리플리케이션하는 것이다.

리플리케이션을 수행하면 리더팔로워가 정해진다. 그리고 모든 읽기와 쓰기가 리더에서만 이루어진다. 팔로워는 리더의 데이터를 그대로 리플리케이션만 하고 읽기와 쓰기에는 관여하지 않는다.

리더가 다운된 경우 팔로워가 새로운 리더가 되어 프로듀서의 요청에 응답하게 된다. 이렇게 서버가 다운되는 상황이 발생하더라도 리더 변경을 통해 문제 없이 프로듀서의 요청을 처리할 수 있다.

replication.factor

리플리케이션 팩터를 통해 파티션을 리플리케이션할 카프카 브로커의 수를 지정할 수 있다. Default는 1이며 설정을 통해 변경할 수 있다. 또한 토픽 별로 리플리케이션을 설정할 수 있다.

단점

  1. 토픽의 크기가 크다고 가정한다면 해당 토픽 크기 * 리플리케이션 수 만큼의 저장 공간이 필요로 하게 된다
  2. 브로커에서 완벽한 리플리케이션을 보장하기 위해 비활성화된 토픽의 상태를 확인하는 작업 등이 이루어지게 되는데 이런 점에서 리소스 사용량이 증가하게 된다

그렇기 때문에 토픽에 저장되는 데이터의 중요도에 따라 적절한 리플리케이션 팩터의 설정이 필요하다

Author: Song Hayoung
Link: https://songhayoung.github.io/2020/07/13/kafka/replication/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.