데이터 엔지니어 이것저것

Apache - Kafka 본문

오픈소스/kafka

Apache - Kafka

pastime 2021. 4. 4. 16:32
728x90

카프카란?
실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산 데이터 스트리밍 플랫폼

  • 메세징 큐의 일종
  • 분산형 스트리밍 플랫폼
  • 대용량의 실시간 로그 처리에 특화

주요 개념

  • porducer : 메세지 생산자
  • consumer : 메세지 소비자
    consumer goup : consumer 들끼리 메세지를 나눠서 가져간다.
    offset을 공유하여 중복으로 가져가지 않는다.
  • broker : 카프카 서버를 가르킴
  • zookeeper : 카프카 서버 ( + 클러스터) 상태를 관리
  • cluster : 브로커들의 묶음
  • topic : 메세지 종류
  • partitions : topic이 나눠지는 단위
  • Log : 1개의 메세지
  • offset : 파티션 내에서 각 메세지가 가지는 unique id

 

주키퍼가 카프카의 상태와 클러스터를 관리해주고,

정해진 토픽에 프로듀서가 메세지를 발행하면 컨슈머가 필요할때 해당 메세지를 가져간다.

docker로 구축 ( kafka + zookeeper)

 

카프카의 메세지는 토픽으로 분류한다.

 

토픽은 DB에서는 테이블로 생각하면 된다.

하나의 토픽은 여러개의 파티션으로 구성될수 있다.

즉 하나의 토픽이 여러 서버에 걸쳐 수평적으로 확장이 가능하다.

 

 

 

 

 

version: '2'

networks:
  test:

services:
  zookeeper:
    image: wurstmeister/zookeeper:3.4.6
    container_name: zookeeper
    ports:
      - "2181:2181"
    networks:
      - test

  kafka:
    image: wurstmeister/kafka:2.12-2.0.1
    container_name: kafka
    environment:
      KAFKA_ADVERTISED_LISTENERS: PLAINTEXT://localhost:9092
      KAFKA_LISTENERS: PLAINTEXT://0.0.0.0:9092
      KAFKA_ADVERTISED_HOST_NAME: 127.0.0.1
      KAFKA_ADVERTISED_PORT: 9092
      KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
      KAFKA_CREATE_TOPICS: "javainuse-topic:1:1"   # Topic명:Partition개수:Replica개수
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
    ports:
      - "9092:9092"
    depends_on:
      - zookeeper
    networks:
      - test

 

728x90

'오픈소스 > kafka' 카테고리의 다른 글

브로커와 클러스터  (0) 2022.01.03
ZooKeeper란?  (0) 2022.01.02
카프카 개발 배경  (0) 2021.12.26
카프카 프로듀서  (0) 2021.04.27
python - kafka  (0) 2021.04.04