Kafka

mkhome·2021년 9월 29일
0

컨슈머

  • 컨슈머는 파티션으로부터 레코드를 가져간다 (브로커가 제공 x)
  • 컨슈머의 개수는 파티션의 수와 같거나 작아야한다. (많을 경우 놀고 있는 컨슈머 발생)
  • 컨슈머, 파티션의 숫자가 같을 경우 1:1 연결로 더 효과적으로 처리 가능
  • 컨슈머 중 하나가 장애가 난 경우
    - 다른 파티션에 할당 재조정 --> 리밸런싱
    • 나머지 컨슈머가 파티션으로부터 polling 수행
  • 목적에 따라 컨슈머 그룹 분리 가능
    - 목적에 따라 그룹을 분리할 수 있지만 장애 대응, 재입수(재처리)를 위해 임시 신규 컨슈머 그룹을 생성하여 사용하기도 한다.

로컬에 카프카 설치하기

  1. 주키퍼 실행

    bin/zookeeper-server-start.sh config/zookeeper.properties

    • 해당 명령문으로 실행을 할 수 있지만 이럴 경우에 새롭게 터미널을 켜야하므로 daemon형태로 실행하는 것이 더 효율적

    bin/zookeeper-server-start.sh -daemon config/zookeeper.properties

  2. 카프카 실행
    bin/kafka-server-start.sh -daemon config/server.properties
    실행중인 카프카, 주키퍼를 멈추기 위해선 bin/내부에 stop 파일을 찾아서 실행하면된다.

카프카 토픽 생성 및 확인

  • 현재 파티션은 1개
    bin/kafka-topics.sh --create --bootstrap-server localhost:9092 --replication-factor 1 --partitions 1 --topic test

    --create : 새로운 토픽을 생성한다.
    --bootstrap-server : 연결할 카프카 서버를 지정한다. (기존에는 --zookeeper 옵션으로 주키퍼 서버를 지정했으나 현재는 Deprecated 되었다.) 
    --replication-factor : 생성되는 토픽의 각 파티션의 Replication factor를 지정한다.
    --partitions : 생성되는 토픽의 파티션 수를 지정한다.
    --topic : 생성하려는 토픽의 이름을 지정한다.

bin/kafka-topics.sh --list --bootstrap-server localhost:9092 로 토픽 확인

토픽에 메시지 발행하기

bin/kafka-console-producer.sh --bootstrap-server localhost:9092 --topic {{topic_name}}

메시지 컨슘하기

bin/kafka-console-consumer.sh --bootstrap-server localhost:9092 --topic {{topic_name}} --from-beginning

토픽 삭제하기

  1. 주키퍼 shell에 접속
    1. bin/zookeeper-shell.sh localhost:2181
    2. ls /brokers/topics 를 통해 topic 확인
    3. rmr /brokers/{{topic}}으로 삭제
    --> 현재 rmr보단 deleteall을 사용하라고 함

주키퍼란?

  • 주키퍼란 분산 어플리케이션의 상태 관리를 위한 코디네이션 어플리케이션. 분산 애플리케이션이 안정적인 서비스를 할 수 있도록 분산되어 있는 각 애플리케이션의 정보를 중앙에 집중하고 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공한다.

출처: https://cornswrold.tistory.com/523 [평범한개발자노트]

0개의 댓글