[KAFKA] 기본 개념

2022. 9. 6. 10:45·KAFKA
728x90

Kafka 정의

  • 이벤트 스트리밍 플랫폼

Kafka 아키텍처 

http://www.masterspringboot.com/apache-kafka/setting-up-a-mutiple-broker-kafka-cluster/

  • Kafka는 발행-구독(publish-subscribe) 모델을 기반으로 동작하며 크게 프로듀서, 컨슈머, 브로커로 구성
  • 프로듀서는 메세지(이벤트)를 카프카에 넣고, 브로커는 메세지(이벤트)를 저장 (브로커는 일반적으로 3대이상 구성, 클러스터 형태), 컨슈머는 메세지(이벤트)를 읽는 역할
  • 주키퍼는 카프카 클러스터를 관리하는 역할, 추후에는 컨플루언트에서 주키퍼와 연동하지 않도록 구성할 예정이라고함

Kafka 구성요소 

Topic / Partition / Offset

https://www.confluent.io/ko-kr/blog/getting-started-with-apache-kafka-in-python/

 

종류  
Topic
  • 메세지를 구분하는 단위 즉 특정 스트리밍 데이터임 (예시로 파일시스템 폴더라고 생각하면됨)
  • 토픽은 이름으로 구분
  • 한개의 토픽은 한개 이상의 파티션으로 구성됨
Partition
  • 메시지를 저장하는 물리적인 파일
  • 카프카에서는 토픽 안에 파티션을 나누어서 그수대로 데이터를 분산 처리함
  • 카프카 옵션에서 지정한 replica의 수만큼 파티션이 각서버에 복제가 됨
Offset
  • 메세지를 저장하는 위치
  • 특정 파티션에서만 의마가 있고, 속해 있는 파티션 내에서만 보장이 됨
  • 컨슈머는 오프셋 기준으로 메세지를 순서대로 읽음

Broker

  • 카프카가 설치되어있는 서버 단위, 기본 3개이상 구성 권장 (클러스터링 구성)
  • 브로커에 여러개의 토픽이 존재할 수 있고, 하나의 브로커에만 설정되는 것이 아니라 여러개의 브로커에 나누어서 하나의 토픽을 생성할 수 도 있음

Producer / Consumer

종류  
Producer
  • 특정 토픽에 전송할 메세지를 생성하는 역할 
  • 브로커로 전송시 전송성공 여부를 알 수 있음, 실패할 경우 재시도 가능
Consumer
  • 토픽의 데이터를 가져와서 구독하는 역할
  • 데이터를 각 파티션내에서 순서대로 읽음  

Consumer Group

  • 하나의 토픽을 구독하기 위한 여러 컨슈머들의 모음
  • 가용성 때문에 컨슈머를 그룹화함

Zookeeper

  • 클러스터내의 서버들을 관리하는 역할 (브로커 관리)
  • 클러스터 최신 설정 정보 관리 동기화, Replication 리더 채택을 함
  • 브로커에 분산 처리된 메세지 큐의 정보를 관리
  • 카프카 클러스터를 관리하기 때문에 카프카 서버 기동시 주키퍼가 먼저 기동되어야함

Kafka 특징

  • 높은 처리량 : 프로듀서가 컨슈머로 데이터를 보낼때와 컨슈머가 브로커로 데이터를 받을때 묶어서 전송함, 묶음단위로 빠르게 처리 
  • 확장성 : 안정적으로 확장이 가능함, 예를 들어 데이터 요청이 많을 경우 브로커 개수를 늘려 스케일 아웃이 가능
  • 영속성 : 전송받은 데이터를 메모리에 저장하지 않고 파일 시스템에 저장
  • 고가용성 : 3대이상의 서버로 운영되기 때문에 서버에 장애가 발생하더라도 무중단으로 안전하게 운영이 가능
저작자표시

'KAFKA' 카테고리의 다른 글

[KAFKA] 토픽 / 파티션 / 컨슈머 그룹 관계  (0) 2025.01.31
'KAFKA' 카테고리의 다른 글
  • [KAFKA] 토픽 / 파티션 / 컨슈머 그룹 관계
집한구석
집한구석
  • 집한구석
    tgyun615.info
  • 전체
    오늘
    어제
    • 카테고리 (183)
      • JAVA (38)
      • SPRING (15)
      • KOTLIN (23)
      • NETTY (1)
      • DEVOPS (3)
      • DOCKER (7)
      • KUBERNETES (2)
      • JAVASCRIPT (1)
      • SPLUNK (3)
      • ELK (7)
      • KAFKA (2)
      • GO (4)
      • ALGORITHM & DATA STRUCTURE (9)
      • IDE (5)
      • OS (16)
      • NETWORK (14)
      • GCP (2)
      • AWS (2)
      • DATABASE (10)
      • CLEANCODE (7)
      • OTHER (12)
  • 최근 글

  • 태그

    java
    ElasticSearch
    코틀린
    Spring
    프로그래머스
    이펙티브 코틀린
    splunk
    JPA
    Kafka
    docker
    go
    Elk
    cleancode
    클린코드
    IntelliJ
    자바
    이펙티브코틀린
    SQL
    엘라스틱서치
    AWS
  • 링크

    • github
    • linkedin
    • resume
  • hELLO· Designed By 정상우. v4.10.3
집한구석
[KAFKA] 기본 개념
상단으로

티스토리툴바