DevBoi

[Kafka] Replica 본문

Develop/[Kafka]

[Kafka] Replica

HiSmith 2023. 7. 20. 23:48
반응형

데이터 복제는 카프카를 장애 허용시스템으로 동작하도록 하는 원동력이다.

복제의 이유는 클러스터로 묶인 브로커 중 일부에 장애가 발생하더라도 데이터를 유실하지 않고 안전하게 사용하기 위함이다.

카프카의 데이터 복제는 파티션 단위로 이루어진다.

브로커에서 장애가 발생하면 데이터 유실이 발생될 것으로 예상되는데

각각의 데이터를 브로커의 파티션 단위로 복제를 하여, 장애가 나더라도, 데이터를 유실하지 않게 된다.

 

토픽을 생성할때, replication factor도 같이 설정이 되는데, 이를 설정하지 않으면 브로커에서 설정한 기본값으로 따라간다.

최소값은 1 이고 최대값은 브로커의 개수만큼 설정할 수 있다. 2~3으로 대게 설정한다.

 

 

3으로 설정하는 경우, 위와 같고, 파티션이 1개가 되고, 2개가 팔로워로 복제가 된다.

리더와 팔로워 구조로 이루어져있고, 컨슈머가 통신하는건 리더이지만, 팔로워에서 리더의 데이터를 복제한다.

 

파티션 복제로 인해, 장애에 대한 어느정도 대비가 되는 것이다.

물론 디스크의 용량을 더 사용하는 문제가 있긴하다. 그래서 너무많은 복제를 사용하면 많은 디크스 용량을 사용하게 된다.

 

브로커에 장애가 발생한 경우, 팔로워중 하나가 리더로 승급하고, 사용불가한 녀석은 팔로워로 내려간다.

승급과정이 필요한 이유는 리더만 프로듀서와 컨슈머와 통신하기 떄문에, 이런 통신을 위해서 승급 과정이 필요하다.

metric 과 같이 일부 데이터가 유실되어도 되는경우, replica factor가 1이여도 된다.

금융정보같이 유실되면 안되는 경우, 3으로 설정하기도 한다.

반응형

'Develop > [Kafka]' 카테고리의 다른 글

[Kafka] 토픽과 파티션  (0) 2023.07.21
[Kafka] ISR (In-Sync-Replicas)  (0) 2023.07.21
[Kafka] 세그먼트와 삭제 주기  (0) 2023.07.20
[Kafka] 브로커의 역할  (0) 2023.07.20
[Kafka] Broker의 역할  (0) 2023.07.18