Posts [Kafka] Kafka 튜토리얼 (Kafka Tutorial)
Post
Cancel

[Kafka] Kafka 튜토리얼 (Kafka Tutorial)

Kafka?

  • 비동기 처리를 위한 메시징 큐의 한 종류
  • ZooKeeper, Broker, Producer, Consumer와 같은 개념이 있다.

주키퍼(ZooKeeper)

  • 브로커의 메타 정보를 관리하고, 브로커의 컨트롤러(Controller)를 선출하는 역할을 한다.
  • 주키퍼 앙상블(ZooKeeper Ensemble)
    • 주키퍼의 신뢰도 높은 서비스를 위해 클러스터(Cluster)라는 노드 세트를 구성한 것이다.
    • 주키퍼는 과반수 투표 방식을 따른다.
    • 그래서 살아 있는 노드가 과반이면, 지속적인 서비스를 제공할 수 있다.
    • e.g. 주키퍼 앙상블을 3대로 구성한다면? 서버 1대에 장애가 발생해도 문제가 없다. 남은 2대로 안정적인 서비스를 제공할 수 있다.
    • 그러므로 주키퍼 앙상블은 홀수로 설정하는 것이 좋다.

브로커(Broker)

  • 일반적으로 카프카라고 불리는 시스템을 말한다.
  • 즉, 카프카 자체이다.

이미지 출처: [Kafka 101] 카프카 브로커 (Kafka Broker)

프로듀서(Producer)

  • 이벤트를 발행하는 주체
  • 카프카와는 별도인 애플리케이션이다.

컨슈머(Consumer)

  • 이벤트를 구독하는 주체
  • 카프카와는 별도인 애플리케이션이다.

이미지 출처: Kafka 운영자가 말하는 처음 접하는 Kafka


Quick Start

카프카 설치

1
2
$ tar -xzf kafka_2.13-3.0.0.tgz
$ cd kafka_2.13-3.0.0.tgz

카프카 시작

  • 주키퍼 실행
    • 터미널 1개 실행
1
$ bin/zookeeper-server-start.sh config/zookeeper.properties
  • 브로커 실행
    • 터미널 1개 실행
1
$ bin/kafka-server-start.sh config/server.properties

토픽 생성

  • 토픽(Topic)은 데이터를 구분하기 위한 일종의 저장소이다.
  • e.g. 아파트의 우편함, 이메일의 메일함
  • 같은 토픽은 같은 문맥(Context)를 가진다.
  • e.g. 주문(Order)이라는 토픽이 있다면, 주문에 대한 이벤트(주문 생성, 주문 취소 등)가 발행/구독된다.
1
2
# 다양한 옵션을 지정할 수 있다.
$ bin/kafka-topics.sh --create --partitions 1 --replication-factor 1 --topic quickstart-events --bootstrap-server localhost:9092

이벤트 발행

  • Producer Client
    • 터미널 1개 실행
1
$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092

이벤트 구독

  • Consumer Client
    • 터미널 1개 실행
1
$ bin/kafka-console-producer.sh --topic quickstart-events --bootstrap-server localhost:9092

최종 모습

  • 터미널 4개를 실행했고, 각 역할에 따라 구분했다.

  • 프로듀서에서 이벤트를 발행하면 컨슈머에서 이벤트를 구독하는 형태이다.


Referenecs

This post is licensed under CC BY 4.0 by the author.