본문 바로가기

소프트웨어-이야기/데이터 저장소 + 시각화

<고승범> 실전 카프카 개발부터 운영까지


고승범님의 카프카 저서를 통해 학습한 내용을 정리하고자 한다. 

 

카프카의 기본 구성

  • kafka: 데이터를 받아서 전달하는 데이터 버스 역할
  • producer: 카프카에 데이터를 만들어서 주는 역할을 하는 클라이언트
  • consumer: 메시지를 빼내서 소비하는 역할을 하는 클라이언트
  • zookeeper
    • 카프카의 동작을 관리하기 위한 메타데이터를 관리하는 역할
    • 브로커 정상 상태 점검 (health check) 담당

그외 카프카 주요 요소

  • kafka: 브로커를 구성한 클러스터
  • broker: 카프카 애플리케이션이 설치된 서버 혹은 노드 
  • topic:
    • 카프카는 메시지 피드들을 토픽으로 구분하고, 각 토픽의 이름은 카프카 내에서 고유함
    • RDB의 테이블 같은 역할
  • partition
    • 병렬 처리 및 고성능을 위해 하나의 토픽을 여러개로 나눈 것을 말함
    • RDB의 파티션 같은 역할
  • segement
    • 프로듀서가 전송한 실제 메시지가 로컬 디스크에 저장되는 파일
  • message / record
    • 프로듀서가 브로커로 전송하거나 컨슈머가 읽어가는 데이터 조각 

 

리플리케이션

리플리케이션이란 각 메시지들을 여러개로 복제해서, 카프카 클러스터 내 브로커들에 분산시키는 동작을 말한다. 리플리케이션 단위는 파티션이다. 

위의 그림은 다음 사례를 도식화한 것이다.

  • kafka cluster: 1개 
  • broker: 3대로 구성
  • topic: 1개 
  • partition: 1개
  • replication factor: 3개  
    • create-order topic의 partition이 1개이니, 총 3개의 partition이 3대의 broker에 분산 복제된다.
    • 복제수는 원본 파티션도 포함한 개수이다. 
  • reader partition: 1개 
    • producer/consumer의 읽기/쓰기는 reader partition을 통해서만 발생한다.
  • follwer partition: 2개 

 

책에서 권장하는 리플리케이션 팩터수는 다음과 같다.

  • 테스트 or 개발환경: 1개 
  • 운영환경
    • 로그성 메시지로 약간의 유실을 허용하는 경우: 2개
    • 유실을 허용하지 않는 경우: 3개 
      • 그 이상을 설정할 수도 있지만, 저자의 경험상 3을 권장한다고 한다. 
      • 이 정도면 충분한 메시지 안정성을 보장하고, 디스크도 적절하게 사용한다고 한다. 

 

<<이어서...>>