Kafka
- Scalar 언어로 된 오픈 소스 메시지 브로커 프로젝트 (브로커: 중간 서버, 메시지: 다양한 데이터 가능)
- 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼 제공
카프카 이전의 방식
- end to end 연결 방식의 아키텍처
- 데이터 연동의 복잡성 증가
- 서로 다른 데이터 파이프라인 연결 구조
- 확장이 어려움
카프카 탄생의 배경
-> 모든 시스템으로 데이터를 실시간으로 전송하여 처리할 수 있는 시스템
-> 데이터가 많아지더라도 확장이 용이한 시스템
보내는 쪽과 받는 쪽이 누가 보내고 누가 받는지를 전혀 신경 쓰지 않게 된다.
- Prdocuer / Consumer를 분리
Kafka Broker
= Kafka Application Server
-> 3대 이상의 클러스터를 구성
Zookeeper
- Broker를 중재해주는 역할
카프카 사용 시나리오
kafka client
-> java library
여러가지 kafka 관련 api 제공
kafa cluster <-> kafka -client application
kafka 서버 구동
$KAFKA_HOME/bin/zookeeper-server-start.sh $KAFKA_HOME/config/zookeeper.properties
$KAFKA_HOME/bin/kafka-server-start.sh $KAFKA_HOME/config/server.properties
topic 생성
$KAFKA_HOME/bin/kafka-topics.sh --create --topic my-topic --bootstrap-server localhost:9092 --partitions 3 --replication-factor 1
topic 목록 확인
$KAFKA_HOME/bin/kafka-topics.sh --list --bootstrap-server localhost:9092
topic 정보 확인
$KAFKA_HOME/bin/kafka-topics.sh --describe --topic my-topic --bootstrap-server localhost:9092
메시지 생산 producer
$KAFKA_HOME/bin/kafka-console-producer.sh --broker-list localhost:9092 --topic my-topic
sudo /opt/homebrew/bin/kafka-console-producer --broker-list localhost:9092 --topic my-topic
메시지 소비 consumer
$KAFKA_HOME/bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic my-topic --from-beginning
sudo /opt/homebrew/bin/kafka-console-consumer --bootstrap-server localhost:9092 --topic my-topic --from-beginning
kafka connect 사용하기
- kafka connect를 통해 data를 import/export 가능
- 코드 없이 configuration으로 데이터 이동
- standalone mode, Distribution mode 지원
- restful api 통해 지원
- stream 또는 batch 형태로 데이터 전송 가능
- custom connector를 통한 다양한 plugin 제공
source system > kafka connect source > kafka cluster > kafka connect sink > other dbs...
Kafka Connect는 데이터 소스(Source)와 데이터 대상(Sink)을 연결하여 데이터를 효율적으로 이동시킬 수 있다. 데이터 소스는 Kafka로부터 데이터를 읽어들이는 역할을 하며, 데이터 대상은 Kafka로 데이터를 전송하는 역할을 한다. Kafka Connect를 사용하면 다양한 소스 시스템(예: 데이터베이스, 메시징 시스템, 파일 등)과 대상 시스템(예: 데이터베이스, Hadoop, Elasticsearch 등) 사이에서 데이터를 쉽게 이동시킬 수 있다.
kafka connect 실행
./bin/connect-distributed ./etc/kafka/connect-distributed.properties
'Programming > Redis, Kafka' 카테고리의 다른 글
ubuntu 환경에서 redis, master-slave, sentinel 설치 (0) | 2023.05.31 |
---|---|
Redis의 특징, 개념, 장점, 단점, 목적 (0) | 2023.05.31 |
이커머스에서 redis, kafka usecase (0) | 2023.05.31 |
카프카 kafka 토픽 + producer + consumer 예제 코드 (0) | 2023.05.30 |
맥 homebrew 를 통해 설치한 kafka 실행하기 (0) | 2023.05.30 |