Apache Software Foundation의 Scala 언어로 된 오픈 소스 메시지 브로커 프로젝트
실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼 제공
모든 시스템으로 부터 데이터를 실시간으로 전송하여 처할 수 있는 시스템
데이터가 많아지더라도 확장이 용이한 시스템
Producer/Consumer 분리
메시지를 여러 Consumer에게 허용
높은 처리량을 위한 메시지 최적화
Scale-out 가능(여러개의 서버로 구성해서 작동이 가능)
Eco-system
tar xvf 압출을 풀 압축파일
실제환경에서는 멀티클러스터링을 통해서 다양하게 브로커를 구성한 다음에 안정성있는 메시지 전달할 수 구조로 구축하는 게 좋음
예제는 싱글 주키퍼, 싱글 카프카 두가지만 구성
./bin/zookeeper-server-start.sh ./config/zookeeper.properties
bin/kafka-server-start.sh config/server.properties
Producer가 메시지를 전송하면 Topic에 저장이 된다.
Topic을 구독을 한 Consumer쪽으로 일괄적으로 메시지를 받음
Topic 생성
./bin/kafka-topics.sh --bootstrap-server localhost:9092 --create --topic quickstart-events --partitions 1 --replication-factor 1
--create : 생성
--topic : topic 명
--bootstrap-server : 연결한 카프카 서버 주소
--partitions : 생성하는 토픽의 파티션 수
--replication-factor : 생성하는 토픽의 각 파티션의 replication-factor 개수
./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list
./bin/kafka-topics.sh --bootstrap-server localhost:9092 --describe
./bin/kafka-console-producer.sh --broker-list localhost:9092 --topic quickstart-events
./bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic quickstart-events \ --from-beginning
/tmp/kafka-logs 삭제
9092 포트 찾아서 죽이기
/tmp/kafka-logs 재생성하기