반응형

/*
-- Title : [kfk] 파티션 및 복제 요소(Partition & Replication Factor)
-- Tag : 아파치 카프카 복제 apache kafka replication
*/

 


카프카 주제 복제 (Kafka Topic Replication)

• 복제는 파티션(Partition) 수준에서만 구현
• 토픽 파티션(Topic Partition)을 복제본이라고 함


■  파티션 필요성

•  Aggregation : 생산자(Producer)에 의해 생성된 레코드(Record)를 저장
•  Sorting - Event - Sourcing : 레코드를 순서대로 유지
• Parallelism : 병렬처리를 통한 빠른 데이터 읽기
• Efficiency : 데이터를 효율적으로 저장하고 가용성 유지


■  파티션 복제 원리

• 모든 파티션(Partition)에는 리더(Leader) 역할을 하는 하나의 서버와 팔로워(Follower) 역할하는 나머지 서버가 있음
• 리더 파티션(Leader Partition)은 프로듀서(Producer)의 모든 읽기-쓰기 요청을 처리
• 팔로워 파티션(Follower Partition)은 리더 파티션을 복제
• 리더 서버가 실패하면 팔로워 서버 중 하나가 리더 파티션으로 변경
• 각 카프카 브로커(Kafka Broker)가 로드를 분산하기 위해 동일한 양의 파티션 리더(Partition Leader)를 설정해야 함


■ 리더 파티션(Leader Partition) 선출

• 파티션 복제본 중 하나가 리더 파티션으로 할당
• 레코드는 항상 리더 파티션에 쓰이고 읽힘
• 리더 파티션은 팔로워 파티션(Follower Partition)을 통해 다른 브로커(Broker)에 복제
• 리더 파티션이 중복되면 Kafka에 의해 자동으로 하나가 선출


■ 프로듀서 레코드 저장 방식 (Producer Acknowledgement)

ㅁ acks = 0

• 레코드(Record)를 브로커(Broker)에 전송하고 응답을 기다리지 않음
• 가장 빠르지만 위험

ㅁ acks = 1

• 레코드(Record)를 브로커(Broker)에 전송하고 리더 파티션(Leader Partition)에 기록되면 응답
• 보통 빠르면서 안전한 방법

ㅁ acks = 2

• 레코드(Record)를 브로커(Broker)에 전송하고 리더 파티션(Leader Partition)에 기록된 후 다른 브로커에 복제가 되면 응답
• 가장 느리지만 가장 안전한 방법


※ Resources
www.cloudkarafka.com/blog
http://cloudurable.com/
medium.com/analytics-vidhya 

 

반응형

+ Recent posts