분산 스트리밍 플랫폼!
이 친구는? 왜쓰는지?
- 이렇게 복잡한 것을을 간단하게 구현할 수 있다.
자세한설명!
Kafka란?
- 각 자의 아이피를 입력해서 서로 통신하는게 아니라 카프카를 통해서 연결 관리가 용이해진다.
- 각 서버의 IP가 변하더라도 변경할 필요없다.
- 중앙에서 카프카로 왔다깠다 하도록 도와준다!
특징
- 빠르다
수 천개의 데이터 소스로 부터 초당 수백 메가바이트의 데이터를 입력 받아도 안정적으로 처리 가능
- 확장가능
메시지를 파티션으로 분리햐여 분산 저장, 처리할 수 있어 클러스터로 구성하여 확장 가능
- 안정적이다
클러스터에 파티션 복제하여 장애 내구성을 가짐
구조
- PUB(producer)발행자 - SUB(consumer)구독자 모델로 구성
- Topic(주제)에 맞는 Broker(브로커)에게 전탈하면 구독자가 브로커에게 요청해서 가져가는 방식
발행자는 메시지를 topic으로 카테고리화
구독자는 topic에 맞는 메시지를 브로커에게 요청
발행자와 구독자는 서로 알지 못함
간단하게 구동해보기
- 서버 3대 준비하기
200.200.200.5 broker
200.200.200.6 producer
200.200.200.7 consumer
yum -y install java-1.8.0-openjdk-devel.x86_64
wget https://downloads.apache.org/kafka/3.4.0/kafka_2.13-3.4.0.tgz
tar -xzvf kafka_2.13-3.4.0.tgz
mv kafka_2.13-3.4.0 /opt/kafka
- 3세 모두 설치
브로커만 카프카를 설치해줘도 되는데 우린 서로 통신하는지 확인하기 위해 모두 설치
(기본적으로 가지고있는 콘솔을 이용할 예정)
- 자바 기반이기 때문에 자바도 같이 설치!
broker
/opt/kafka/bin/zookeeper-server-start.sh /opt/kafka/config/zookeeper.properties
- 주키퍼가 카프가를 관리하기 때문에 주키퍼를 설치하고 카프카를 실행해줘야한다.
(동물원 지키미... 사용되는 프로그램의 아이콘이 동물... 뭐 암틈)
vi /opt/kafka/config/server.properties
38번 라인에 advertised.listeners 설정
주석 해제 후
advertised.listeners=PLAINTEXT://[브로커IP]:9092
/opt/kafka/bin/kafka-server-start.sh /opt/kafka/config/server.properties
- 다른 터미널창 하나를 더 실행시켜서 진행
- 연결해주는 자기 자신의 IP를 작성해줘야 한다.
- 실행!
producer
/opt/kafka/bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server [broker IP]:9092
consumer
/opt/kafka/bin/kafka-console-consumer.sh --topic quickstart-events --from-beginning --bootstrap-server [broker IP]:9092
- 서로 통신하는 것을 확인
- 현재 서로의 ip를 모르는 상태이다.!