• 카프카 설치

    • docker 및 docker-compose 실행시

      version: '2'
      services:
        zookeeper:
          image: wurstmeister/zookeeper
          ports:
           - "2181:2181"
        kafka:
          image: wurstmeister/kafka
          ports:
           - "9092:9092"
          environment:
            KAFKA_ADVERTISED_LISTENERS: INSIDE://kafka:9093,OUTSIDE://localhost:9092
            KAFKA_LISTENER_SECURITY_PROTOCOL_MAP: INSIDE:PLAINTEXT,OUTSIDE:PLAINTEXT
            KAFKA_LISTENERS: INSIDE://0.0.0.0:9093,OUTSIDE://0.0.0.0:9092
            KAFKA_ZOOKEEPER_CONNECT: zookeeper:2181
            KAFKA_INTER_BROKER_LISTENER_NAME: INSIDE
      
      
      • docker-compose.yml 로 파일 생성
      • docker-compose up -d 로 실행
  • Zookeeper의 역할

    • Zookeeper는 분산 시스템을 위한 코디네이션 서비스
      • Zookeeper는 Kafka 클러스터에 있는 모든 브로커들의 상태 정보를 관리. 예를 들어, 어떤 브로커가 활성 상태인지, 어떤 브로커가 다운되었는지를 추적
      • Zookeeper를 통해 Kafka 클러스터의 구성 정보를 동기화하고, 이 정보가 클러스터 전체에서 일관되게 유지되도록 보장
  • Kafka의 역할

    • Kafka는 분산 메시징 시스템으로, 주로 실시간 데이터 스트리밍과 메시징 서비스를 제공

    • Kafka는 데이터를 주고받는 중간 다리 역할. 데이터 생산자는 Kafka에 데이터를 보내고, 소비자는 Kafka로부터 데이터를 수신

      Untitled

  • kafka 주요 개념

    • 토픽(Topic)
      • Kafka에서 메시지가 기록되는 논리적인 경로. 모든 메시지는 특정 토픽에 게시.
      • 각 토픽은 여러 개의 파티션으로 분리.
      • 토픽 이름은 메시지의 카테고리처럼 작동하며, consumer들은 특정 토픽에서 메시지를 read
      • 예를 들어, 'user-signups'라는 토픽은 사용자가 가입할 때 생성되는 메시지를 기록
    • 파티션(Partition)
      • 토픽이 나뉘는 작은 단위
      • 각 파티션은 순서대로 메시지를 저장하며, 각 메시지는 특정 오프셋(offset)을 보유
      • 파티션은 물리적인 단위로, 분산 및 병렬 처리
      • 메시지는 파티션 내에서만 순서가 보장되지만, 전체 토픽의 메시지 순서는 보장되지 않음
      • 데이터의 균형 분산을 위해 파티션이 사용되며, Kafka 클러스터의 확장성을 지원
    • 프로듀서(Producer), 컨슈머(Consumer)
    • 컨슈머 그룹
      • 동일한 그룹에 속한 컨슈머들의 집합
      • 컨슈머 그룹 내의 각 컨슈머는 토픽의 파티션을 나누어 read
      • 만약 컨슈머 그룹에 있는 컨슈머의 수가 토픽의 파티션 수보다 적다면, 하나의 컨슈머가 여러 파티션을 처리
    • 오프셋(Offset)
      • 파티션 내에서 각 메시지가 가지는 고유한 식별자
      • 메시지가 파티션에 기록될 때마다 오프셋이 증가.
    • 브로커(Broker)
      • Kafka 클러스터의 하나의 서버 인스턴스를 의미
      • 각 브로커는 여러 개의 파티션을 관리