[1. Kafka 란?]
Publisher, Consumer 모델의 메시지 큐 이다.
Publisher 가 어떤 Topic 을 주제로 메시지를 발행하면,
해당 Topic 을 구독하는 Consumer 가 발행된 메시지를 가져가는 것이다.
[2. Kafka 구성요소]
- broker
Kafka 서버(머신)를 칭한다.
broker.id 라는 설정 값을 통해서 클러스터 내에서 구분된다. - zookeeper
broker 를 관리하는 관리자 역할을 한다.
=> kafka 노드 관리 및 topic 의 offset 정보등을 관리한다.
kafka 서버를 실행하기 위해서는 zookeeper 의 실행이 반드시 선행되어야 한다. - topic
kafka 내에서 메시지를 분류하기 위한 하나의 단위
topic 이 같은 메시지는 같은 공간(논리적인 공간) 에 저장되어 관리된다고 이해하면 됨 - partition
같은 topic 내에서 메시지를 분류하기 위한 개념
같은 topic 내에서도 메시지 관리를 위해 여러 개의 큐를 두어서 병렬 처리가 가능하다.
topic 생성 시 partition 을 설정 할 수 있으나, 한번 늘린 partiton 은 다시 줄일 수 없다.
partition 이 1개 인 경우 => 싱글 큐
=> 장점
1. Consumer 입장에서 Producer 가 발행한 순서대로 메시지를 소비 할 수 있다.
=> 단점
1. 메시지를 병렬 처리 할 수 없다.
partition 이 2개 이상인 경우 => 멀티 큐
=> 장점
1. 메시지를 병렬 처리 할 수 있다.
=> 단점
1. Consumer 입장에서 Producer 가 발행한 순서대로 메시지를 소비하지 못할 수 있다.
(별도의 key 를 지정하지 않으면 Round Robin 방식으로 처리하기 때문) - prodcuer
메시지를 만들고 topic 에 메시지를 작성한다. - consumer
topic 에서 메시지를 소비한다.
메시지 소비 시 topic 내 partition 에 offset 을 통해서 재실행 시 마지막으로 읽었던 위치 부터 다시 읽을 수 있다.
이러한 offset 은 consumer 별로 관리가 되므로
새로운 consumer 는 처음 부터 메시지를 소비 할 수 있다. - 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 |