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