Kafka

이재철·2021년 10월 10일
0

MSA

목록 보기
7/13
  • Apache Software Foundation의 Scala 언어로 된 오픈 소스 메시지 브로커 프로젝트

  • 실시간 데이터 피드를 관리하기 위해 통일된 높은 처리량, 낮은 지연 시간을 지닌 플랫폼 제공

  • 모든 시스템으로 부터 데이터를 실시간으로 전송하여 처할 수 있는 시스템

  • 데이터가 많아지더라도 확장이 용이한 시스템

  • Producer/Consumer 분리

  • 메시지를 여러 Consumer에게 허용

  • 높은 처리량을 위한 메시지 최적화

  • Scale-out 가능(여러개의 서버로 구성해서 작동이 가능)

  • Eco-system

Kafka Broker

  • 메시지를 주고 받을 때 저장되는 공간으로 Kafka Broker를 사용
  • 실행 된 Kafka 애플리케이션 서버
  • 3대 이상의 Broker Cluster 구성
  • Zookeeper 연동 (Broker를 컨트롤해줌)
    • 역할 : 메타데이터 저장
    • Controller 정보 저장
  • n개 Broker 중 1대는 Controller 기능 수행
    • Controller 역할
      • 각 Broker에게 담당 파티션 할당 수행
      • Broker 정상 동작 모니터링 관리

Kafka 설치

  • https://kafka.apache.org/downloads

  • tar xvf 압출을 풀 압축파일

  • 실제환경에서는 멀티클러스터링을 통해서 다양하게 브로커를 구성한 다음에 안정성있는 메시지 전달할 수 구조로 구축하는 게 좋음

  • 예제는 싱글 주키퍼, 싱글 카프카 두가지만 구성

Kafka 실행

  • 주키퍼 실행 (port : 2181)
./bin/zookeeper-server-start.sh ./config/zookeeper.properties
  • Kafka 실행 (port : 9092)
bin/kafka-server-start.sh config/server.properties

Topic

  • 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 개수
  • Topic 목록 확인
./bin/kafka-topics.sh --bootstrap-server localhost:9092 --list

  • Topic 정보 확인
./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


에러 처리

  • kafka.common.KafkaException: Failed to acquire lock on file .lock in /tmp/kafka-logs.
/tmp/kafka-logs 삭제
9092 포트 찾아서 죽이기
/tmp/kafka-logs 재생성하기 

0개의 댓글