Apache kafka

  • Apache Software Foundation의 Scalar 언어로 된 오픈 소스 메시지 브로커 프로젝트
    • 메시지 브로커
      • Publisher로 부터 전달받은 메시지를 Subscriber로 전달해주는 중간 역할
      • 응용 소프트웨어 간에 메시지를 교환할 수 있게 한다.
      • 이 때 메시지가 적재되는 공간을 Message Queue라고 하며 메시지의 그룹을 Topic이라고 한다.
  • 링크드인에서 개발, 2011년 오픈 소스화
    • 2014년 11월 링크드인에서 kafka를 개발하던 엔지니어들이 kafka개발에 집중하기 위해 Confluent라는 회사 창립
  • 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼 제공
  • Producer(송신자)/Consumer(수신자) 분리
  • 메시지를 여러 Consumer에게 허용
  • 높은 처리량을 위한 메시지 최적화
  • Scale-out 가능(클러스터)
  • Eco-system

Kafka Broker

  • 실행 된 kafka 애플리케이션 서버
  • 3대 이상의 Broker Cluster 구성
  • Zookeeper 연동
    • 역할 : 메타데이터 저장
    • Controller 정보 저장
  • n개 Broker 중 1대는 Controller 기능 수행
    • Controller 역할
      • 각 Broker에게 담당 파티션 할당 수행
      • Broker 정상 동작 모니터링

Ecosystem

  • kafka와 데이터를 주고받기 위해 사용하는 Java Library
    • kafka-clients
  • Producer, Consumer, Admin, Stream 등 kafka 관련 API 제공
  • 다양한 3rd party library 존재 : C/C++, Node.js, Python, .NET

Kafka 서버 기동

- Zookeeper 및 kafka 서버 구동
    - $KAFKA_HOME\bin\windows\zookeeper-server-start.bat $KAFKA_HOME\config\zookeeper.properties
    - $KAFKA_HOME\bin\windows\kafka-server-start.bat $KAFKA_HOME\config\server.properties
- Topic 생성
    - $KAFKA_HOME\bin\window\kafka-topics.bat —-create -—topic quickstart-events —-bootstrap-server loacalhost:9092 \ -—partitions 1
- Topic 목록 확인
    - $KAFKA_HOME\bin\window\kafka-topics.bat -—bootstrap-server localhost:9092 —list
- Topic 정보 확인
    - $KAFKA_HOME\bin\window\kafka-topics.bat -—describe -—topic quickstart-events -—bootstrap-server localhost:9092
- 메시지 생산
    - $KAFKA_HOME\bin\window\kafka-console-producer.bat --broker-list localhost:9092 —-topic quickstart-events
- 메시지 소비
    - $KAFKA_HOME\bin\window\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic quickstart-events \ --from-beginning
  • topic생성 후 목록과 정보를 확인해봄

  • 메시지 확인!

Kafka Connect

  • kafka Connect를 통해 Data를 Import/Export 가능
  • 코드없이 Configuration으로 데이터를 이동
  • Standalone mode, Distribution mode 지원
    • RESTful API 통해 지원
    • Stream 또는 Batch 형태로 데이터 전송 가능
    • 커스텀 Connector를 통한 다양한 Plugin 제공
  • 테스트를 위한 MariaDB 설치완료

'DevOps > MSA' 카테고리의 다른 글

Spring Cloud Gateway - Load Balancer  (0) 2023.05.15
Spring Cloud Gateway - Filter 적용  (0) 2023.05.14
Spring Cloud Gateway  (0) 2023.05.14
Spring Cloud 와 Eureka  (0) 2023.05.14

+ Recent posts