[Kafka] Kafka 개요

robert·2022년 11월 10일
1

Kafka?

  • 분산 스트리밍 플랫폼, 데이터 파이프라인(언제든 데이터를 꺼내 쓸 수 있도록 데이터를 계속 쌓아두는 역할)을 만들 때 주로 사용

Kafka 특징?

  • Publisher Subscriber 모델
    - Publisher Subscriber 모델은 데이터 큐를 중간에 두고 서로 간 독립적으로 데이터를 생산하고 소비
  • 고가용성(High availability) 및 확장성(Scalability)
    - 클러스터로서 작동하므로 Fault-tolerant한 고가용성 서비스를 제공할 수 있고 분산처리를 통해 빠른 데이터 처리가 가능

Kafka 구성?

  • Producer
    - 데이터를 발생시키고 카프카 클러스터(Kafka Cluster)에 적재하는 프로세스
  • Broker
    - 카프카 서버를 의미
  • Zookeeper
    - 분산 코디네이션 시스템, 카프타 클러스터의 리더를 발탁하는 방식도 주키퍼에서 제공
  • Topic
    - 데이터를 관리할 그 기준이 되는 개념
    - 하나의 토픽은 1개 이상의 Partition으로 구성
  • Partition
    - 각 토픽 당 데이터를 분산 처리하는 단위
    - 토픽 안에서 파티션을 나누어서 그 수대로 데이터를 분산처리
    - Kafka option 에서 지정한 replica 수만큼 파티션이 각 서버들에 복제
  • Consumer Group
    - 컨슈머의 집합을 구성하는 단위
    - 카프카에서는 컨슈머 그룹으로서 데이터를 처리하며 컨슈머 그룹 안의 컨슈머 수만큼 파티션의 데이터를 분산처리

파티션의 읽기, 쓰기

  • 쓰기, 읽기 연산은 카프카 클러스터 내의 리더 파티션들에게만 적용
  • 하늘색으로 칠해진 각 파티션들은 리더 파티션이고, 프로듀서가 이 파티션들에게 쓰기 연산을 진행
  • 리더 파티션에 쓰기가 진행되고 난 후, 업데이트된 데이터는 각 파티션들의 복제본들에게 복사
  • Producer에서 생성한 데이터는 '레코드'라고 부르는데, '레코드'를 순서대로 저장하며 저장된 레코드는 FIFO 방식으로 컨슈머에서 fetch
  • 컨슈머에서 파티션에 있는 레코드를 가져가도 삭제되지는 않음

파티션 저장 방법

  1. 키가 Null 일 때 : Rounde Robin

  2. 키가 있을 때 : Using Hash

컨슈머 그룹에서 Topic 데이터를 가져가는 방법

  • 만일 컨슈머와 파티션의 개수가 같다면 컨슈머는 각 파티션을 1:1로 매핑
  • 만일 컨슈머 그룹 안의 컨슈머의 개수가 파티션의 개수보다 적을 경우 컨슈머 중 하나가 남는 파티션의 데이터를 처리
  • 눈여겨 볼 것은 만일 컨슈머의 개수가 파티션의 개수보다 많을 경우 남는 컨슈머는 파티션이 개수가 많아질 떄까지 대기
profile
화이팅!

0개의 댓글