개요
Apache Kafka는 대규모 실시간 데이터 스트리밍 및 메시징 플랫폼입니다. 이는 대량의 데이터를 안정적으로 처리하고, 여러 시스템 간에 데이터를 신속하게 전송하고, 실시간으로 데이터를 처리할 수 있는 기능을 제공합니다.
Kafka는 분산형 publish-subscribe 메시지 큐로서, 데이터를 프로듀서(Producer)가 생성하고, 이를 컨슈머(Consumer)가 실시간으로 읽을 수 있도록 하는 시스템입니다. 이 메시지 시스템은 여러 토픽(Topic)으로 구성되어 있으며, 각 토픽은 관련된 메시지들의 스트림을 담당합니다.
Kafka의 주요 특징 중 하나는 높은 확장성과 내결함성을 가지고 있다는 것입니다. 이는 Kafka 클러스터를 통해 데이터의 병렬 처리와 분산 저장을 가능하게 하며, 이를 통해 높은 처리량과 데이터의 손실 없이 안정적인 작동이 가능합니다.
데이터 파이프라이닝, 웹 트래픽 로그, 이벤트 스트리밍, 실시간 분석, 지표 수집 등 다양한 사용 사례에서 Kafka가 활용됩니다. 데이터의 안정적인 전송과 처리를 요구하는 많은 기업 및 시스템에서 Kafka를 선택하는 경우가 많습니다.
Kafka 설치 및 실행
Kafka공식홈페이지에서 다운로드를 받습니다.
현재 가장 최신버전인 3.6.0버전을 다운받습니다.
Binary 파일을 실행시켜줘야 하므로 Scala 2.13 - kafka_2.13-3.6.0.tgz 파일을 다운받아 줍니다.
다운받은 파일을 적당한 위치로 옮긴 후 압축을 풀어줍니다.
압축을 푼 폴더에 bin 폴더에는 리눅스 환경일 경우 실행할 bin 파일들이 있고 bin 폴더에서 windows 폴더로 들어가면 windows 환경에 실행할 bat 파일들이 있습니다.
실행 및 테스트는 zookeeper와 kafka를 실행하고 producer로 메세지를 전송하고 consumer에 메세지가 전달되는지 확인해보면 됩니다. 실행할 파일들은 아래와 같습니다.
zookeeper-server-start.bat : zookeeper 실행
kafka-server-start.bat : kafka 실행
kafka-console-producer.bat : console에서 kafka로 메세지를 전달할수 있게 해줌(producer 역활)
kafka-console-consumer.bat : producer에서 전달한 메세지를 kafka에 요청해서 console에 노출(소비)해줌(consumer 역활)
Kafka와 같은 분산 시스템에서는 ZooKeeper가 Kafka 브로커(Broker)들 간의 상태를 관리해줍니다. Kafka 브로커는 한개 이상으로 클러스터 구성을 할 수 있고 Zookeeper를 통해 Kafka 브로커들 간의 상태를 관리하게 됩니다. Kafka 브로커는 Kafka를 의미합니다.
producer -> kafka broker-> consumer
producer와 consumer는 각각 다른 시스템입니다.(ex producer : 이벤트서버, consumer : 어플리케이션 서버)
kafka_2.13-3.6.0\bin\windows 폴더에서 아래 명령어를 통해 zookeeper를 실행해줍니다.
.\zookeeper-server-start.bat ..\..\config\zookeeper.properties
zookeeper 실행한 cmd를 그대로 두고 새로운 cmd를 실행해서 kafka server를 실행해 줍니다.
.\kafka-server-start.bat ..\..\config\server.properties
이제 메세지를 전달할 producer와 메세지를 소비할 consumer 테스트를 위해 cmd를 새로 열어서 topic 을 생성하는 bat파일을 실행해봅니다. topic은 데이터를 최종적으로 저장하는 곳이고 데이터를 구분하는 저장소입니다.
아래의 명령어는 localhost:9092 kafka 서버에 syk531 topic을 생성하는 명령어입니다.
9092 포트는 아까 kafka를 실행하는 명령어를 통해 kafka가 실행되는 default port 입니다.
.\kafka-topics.bat --create --bootstrap-server localhost:9092 --topic syk531
kafka server cmd에서 topic이 생성되었다는 로그가 추가되었음을 확인할 수 있습니다.
아래의 명령어를 입력하면 console이 producer가 됩니다. 아래로 한줄이 내려가고 메세지를 보낼수 있습니다.
.\kafka-console-producer.bat --broker-list localhost:9092 --topic syk531
메세지를 몇개 보낸 후 consumer를 확인해보기 위해 새로운 cmd에서 아래의 명령어를 입력해줍니다.
--from-beginnin 옵션을 주면 기존에 쌓여있는 메세지를 가져오게 됩니다.
.\kafka-console-consumer.bat --bootstrap-server localhost:9092 --topic syk531 --from-beginning
이제 producer console에서 메세지를 입력하면 consumer console에 노출되는것을 확인할 수 있습니다.
참고자료
https://always-kimkim.tistory.com/entry/kafka101-broker
'개발 > Kafka' 카테고리의 다른 글
[Apache Kafka] 자주 사용하는 명령어 (0) | 2023.12.11 |
---|---|
[Apache Kafka] CMAK 설치 방법 (1) | 2023.12.11 |
[Apache Kafka] connect, connector (0) | 2023.12.10 |
[Apache Kafka] topic 삭제 방법 (0) | 2023.12.10 |
[Apache Kafka] Spring boot에 Kafka 적용해보기 (0) | 2023.12.08 |