본문 바로가기

Open Source/Kafka

Kafka 기본 개념

[1. Kafka 란?]

Publisher, Consumer 모델의 메시지 큐 이다.

Publisher 가 어떤 Topic 을 주제로 메시지를 발행하면,

해당 Topic 을 구독하는 Consumer 가 발행된 메시지를 가져가는 것이다.

 

 

[2. Kafka 구성요소]

  1. broker
    Kafka 서버(머신)를 칭한다.
    broker.id 라는 설정 값을 통해서 클러스터 내에서 구분된다.

  2. zookeeper
    broker 를 관리하는 관리자 역할을 한다.
    => kafka 노드 관리 및 topic 의 offset 정보등을 관리한다.
    kafka 서버를 실행하기 위해서는 zookeeper 의 실행이 반드시 선행되어야 한다.

  3. topic
    kafka 내에서 메시지를 분류하기 위한 하나의 단위
    topic 이 같은 메시지는 같은 공간(논리적인 공간) 에 저장되어 관리된다고 이해하면 됨
  4. partition
    같은 topic 내에서 메시지를 분류하기 위한 개념
    같은 topic 내에서도 메시지 관리를 위해 여러 개의 큐를 두어서 병렬 처리가 가능하다.
    topic 생성 시 partition 을 설정 할 수 있으나, 한번 늘린 partiton 은 다시 줄일 수 없다.

    partition 이 1개 인 경우 => 싱글 큐
    => 장점
         1. Consumer 입장에서 Producer 가 발행한 순서대로 메시지를 소비 할 수 있다.
    => 단점
         1. 메시지를 병렬 처리 할 수 없다.

    partition 이 2개 이상인 경우 => 멀티 큐
    => 장점
         1. 메시지를 병렬 처리 할 수 있다.
    => 단점
         1. Consumer 입장에서 Producer 가 발행한 순서대로 메시지를 소비하지 못할 수 있다.
            (별도의 key 를 지정하지 않으면 Round Robin 방식으로 처리하기 때문)

  5. prodcuer
    메시지를 만들고 topic 에 메시지를 작성한다.

  6. consumer
    topic 에서 메시지를 소비한다.
    메시지 소비 시 topic 내 partition 에 offset 을 통해서 재실행 시 마지막으로 읽었던 위치 부터 다시 읽을 수 있다.
    이러한 offset 은 consumer 별로 관리가 되므로
    새로운 consumer 는 처음 부터 메시지를 소비 할 수 있다.

  7. consumer group
    말 그대로 여러 consumer 들의 한 group 으로
    같은 topic 에서 메시지를 소비한다.
    이 때 partition 내 offset 을 공유하여, 한 consumer 가 죽어도 다른 consumer 가 이어서 메시지를 소비 할 수 있다.
    또한, dummy consumer 가 없게하기 위해 해당 topic 내 parition 의 개수보다 consumer group 내 consumer 가 많을 수 없다.

 

[3. Kafka 클러스터]

kafka 를 클러스터로 실행 한 경우 (replication 이 2 이상)

kafka 의 broker 는 topic 의 leader 와 follower 로 이루어지게 된다.

(partition 이 2 이상인 경우 partition 단위로도 leader 와 follower 가 설정 됨.)

 

또한, topic 을 통하는 모든 데이터의 read/write 는 오직 leader 에서만 발생한다

 

 

[4. zookeeper]

카프카 클러스터 관리에 대한 메타데이터를 주키퍼 내부 노드에서 확인 할 수 있다.

  • /kafka-main/controller
  • /kafka-main/brokers
  • /kafka-main/config
  • /kafka-main/consumers

...

'Open Source > Kafka' 카테고리의 다른 글

카프카 명령어 정리  (0) 2023.06.13
topic 생성 시 유의 할 점  (0) 2023.06.09
rdkafka 빌드  (0) 2023.06.07
카프카 서버 설정 값 정리  (0) 2023.02.15
Kafka 설치 및 실행  (0) 2022.02.20