데이터 엔지니어링

간단 카프카 정리

haong_ 2023. 7. 8. 21:59

하반기 카프카 도입예정이어서 간단히 정리

Zookeeper

  • 분산형 애플리케이션을 위한 코디네이션 서비스를 제공하는 오픈 소스 프로젝트
  • 카프카에서는 주키퍼를 사용하여 클러스터 상태, 설정 정보, 브로커 정보 등 중요한 메타데이터를 관리하고 저장
  • 클러스터 내에서 리더 선택이나 네이밍 서비스, 분산 동기화 등 서비스 제공
  • 주키퍼의 의존성 문제 때문에 카프카에서 주키퍼를 떼어내기 위한 작업 진행중

Kafka broker

  • 실행된 카프카 애플리케이션 서버 단위
  • 실제 메세지를 저장하고 전달하는 역할
  • 하나 이상의 브로커로 카프카 클러스터 구성

Topic

  • 메세지(데이터) 분류 단위
  • 여러개 파티션으로 나누어져 있어 병렬처리 가능

Partition

  • 한 파티션 내에서 메시지는 항상 순서대로 저장
  • 파티션을 복제하여 다른 브로커에 저장, 장애 발생시 데이터 손실을 방지하고 서비스 가용성 유지
  • 파티션은 여러 브로커에 분산하여 저장가능. 클러스터의 스토리지 용량을 최대한 활용할 수 있고, 단일 브로커에 대한 부하를 분산시킬 수 있음
  • 리더 파티션 : 카프카 클라이언트와 데이터 주고 받는 역할
  • 팔로워 파티션 : 리더 파티션을 지속 복제, 리더 파티션 동작이 불가할 경우 나머지 팔로워중 하나가 리더로 선출됨

Producer & consumer

  • 프로듀서는 메시지를 생성하고 해당 메시지를 카프카의 특정 토픽에게 전송
  • 컨슈머는 특정 토픽에서 메시지를 가져와서 처리하는 역할
    • 하나 이상의 파티션
    • 컨슈머는 컨슈머 그룹을 구성 할 수 있으며, 그룹 내의 각 컨슈머는 다른 파티션에서 메시지를 처리함으로써 병렬 처리를 수행 (목적에 따라 컨슈머 그룹 분리해서 운영)

토픽 셋에 컨슈머 하나
토픽 셋에 컨슈터 셋

Replication

  • 고가용성을 위해 파티션 복제기능으로 데이터 유실 방지
  • ISR : 리더+팔로워 파티션의 싱크가 된 묶음 (in-sync replica)
  • 레플리케이션이 3개 일때 broker 1 장애 발생시
    • 파티션 1에 리더 파티션이 브로커 2 or 브로커 3 중에 새로 할당
    • 카프카 클라이언트는 새로운 리더 파티션과 연동

 

레플리카 파티션 셋