본문 바로가기

IT

카프카 replication factor, min in sync replicas 개념은?

728x90
반응형

 

 

 

Apache Kafka에서 Replication FactorMin In-Sync Replicas는 데이터의 고가용성, 내결함성, 그리고 데이터의 신뢰성을 보장하기 위해 사용되는 중요한 설정입니다.

 

이 두 개념을 상세히 살펴보겠습니다.

 


 

1. Replication Factor (복제 계수)

 

개념

  • Replication Factor는 특정 토픽의 데이터를 저장할 복제본(replica)의 수를 나타냅니다.
  • 각 파티션(partition)의 데이터를 여러 브로커에 복제하여, 하나의 브로커가 실패하더라도 데이터가 손실되지 않도록 합니다.

동작 방식

  • 파티션마다 하나의 **리더(leader)**와 여러 개의 팔로워(follower) 복제본이 있습니다.
  • 클라이언트(프로듀서 또는 컨슈머)는 리더를 통해 읽기/쓰기를 수행하며, 팔로워는 리더의 데이터를 복제합니다.

예시

  • Replication Factor가 3이라면:
    • 각 파티션의 데이터가 Kafka 클러스터 내 3개의 브로커에 복제됩니다.
    • 하나의 브로커가 장애가 발생해도, 나머지 2개의 복제본이 데이터를 유지합니다.

주의점

  • Replication Factor ≤ 브로커 수: 복제본의 수는 클러스터에 있는 브로커의 수를 초과할 수 없습니다.
  • Replication Factor가 높을수록 데이터 안정성은 증가하지만, 리소스(디스크, 네트워크)가 더 많이 소모됩니다.

 


 

2. Min In-Sync Replicas (최소 동기화 복제본)

 

개념

  • **Min In-Sync Replicas(MISR)**는 프로듀서가 데이터를 쓰는 동안 동기화된 상태로 유지해야 하는 최소 복제본 수를 설정합니다.
  • 복제본(replica)은 리더와 동기화(synchronized)된 상태여야 데이터를 성공적으로 저장했다고 간주합니다.

동작 방식

  1. 프로듀서가 메시지를 리더에 전송.
  2. 리더는 메시지를 Min In-Sync Replicas에 설정된 수만큼의 팔로워 복제본에 동기화.
  3. 설정된 수 이상의 복제본이 동기화되지 않으면, 쓰기 요청이 실패합니다.

예시

  • min.insync.replicas=2이고 acks=all로 설정:
    • 리더와 최소 2개의 동기화된 복제본이 있어야 쓰기 요청이 성공으로 간주됩니다.
    • 복제본이 2개 미만으로 동기화된 상태라면, 쓰기 요청이 실패하여 데이터 손실을 방지합니다.

주의점

  • Min In-Sync Replicas는 높은 가용성데이터 신뢰성을 보장하지만, 복제본이 동기화되지 않으면 쓰기 실패 가능성이 높아질 수 있습니다.
  • Replication Factor와의 관계:
    • min.insync.replicas 값은 Replication Factor보다 작아야 합니다. 예: Replication Factor=3일 때, min.insync.replicas는 최대 2로 설정.

 

3. 두 설정의 관계

  • Replication Factor는 데이터 복제의 전체 수를 설정.
  • Min In-Sync Replicas는 데이터가 성공적으로 쓰이기 위해 동기화되어 있어야 하는 최소 복제본 수를 설정.

예시

  • Kafka 클러스터 설정:
    • Replication Factor = 3
    • min.insync.replicas = 2
  • 상황:
    • 하나의 브로커가 다운되어도, 2개의 복제본이 동기화된 상태라면 쓰기 요청이 성공.
    • 두 개 이상의 브로커가 다운되면 쓰기 요청이 실패.

 

4. 설정 사례

 

기본 설정

  1. Replication Factor: 데이터 신뢰성을 위해 최소 3 이상 권장.
  2. Min In-Sync Replicas: 클러스터 안정성을 위해 2 이상 권장.

설정 방법 (Kafka Admin CLI 또는 설정 파일)

  • 토픽 생성 시:
    bash
    
    kafka-topics --create --topic my-topic \
    --partitions 3 \
    --replication-factor 3 \
    --bootstrap-server localhost:9092
  • server.properties 파일에서:
properties

min.insync.replicas=2

 


 

5. 장단점 및 유의사항

 

장점

  • Replication Factor: 장애 발생 시 데이터 손실 방지.
  • Min In-Sync Replicas: 데이터 쓰기 시점에서의 안정성과 신뢰성 보장.

단점

  • 높은 설정값:
    • 클러스터의 리소스 소모 증가(스토리지, 네트워크 트래픽).
    • 쓰기 성능 저하 가능성(특히 동기화 복제본이 부족한 경우).

유의사항

  • 클러스터 규모와 트래픽에 따라 적절한 값을 설정해야 합니다.
  • 프로듀서 설정(acks=all)과 Min In-Sync Replicas를 조합하여 데이터 손실 방지 정책을 강화.

요약

  • Replication Factor: 데이터의 전체 복제본 수를 지정하여 데이터의 가용성과 안정성을 보장.
  • Min In-Sync Replicas: 동기화된 상태로 유지되어야 하는 최소 복제본 수를 설정하여 데이터의 신뢰성을 강화.

이 두 설정을 적절히 구성하면 데이터 안정성성능 간의 균형을 맞출 수 있습니다.

 

 

300x250
반응형

'IT' 카테고리의 다른 글

웹 톰캣 jmx 설정  (0) 2025.01.19
카프카 토픽 생성하는 이유?  (0) 2025.01.18
ADID, IDFA 차이는?  (0) 2025.01.08
데몬 통신과 api 통신 차이는?  (0) 2025.01.07
Netric 이란?  (1) 2024.11.17