본문 바로가기

전체 글141

4. Kafka - 컨슈머 그룹 (Consumer Group) 카프카의 컨슈머 그룹(Consumer Group)이란 동일한 Topic을 구독하는 하나 이상의 컨슈머(Consumer)를 의미한다. 즉, 컨슈머는 어떤 특정 토픽을 구독하는 한 인스턴스라고 본다면, 컨슈머 그룹은 동일한 관심사를 가지는 컨슈머의 그룹이다! 또한 모든 컨슈머들은 단 하나의 컨슈머 그룹에 소속되어야 하며, 컨슈머 그룹은 1개 이상의 컨슈머를 가질 수 있다. 즉 컨슈머 그룹과 컨슈머의 관계는 1:N이 가능하다. 이 컨슈머 그룹의 특징은, 1) 그룹 단위 메세지 처리 - 컨슈머 그룹은 Topic으로부터 메시지를 소비하고 처리하는 단위이다. 동일하나 컨슈머 그룹에 속한 컨슈머 Instance는 그룹 내에서 메시지를 공유하고, 작업을 분산하여 처리한다. 2) 파티션 할당 - Topic은 하나 이상의.. 2024. 4. 4.
3. Kafka - 키가 없는 경우의 파티셔닝 전략 카프카를 파티셔닝해서 쓰는 경우, 어떻게 파티셔닝이 이뤄질까? 카프카는 키가 없는 경우의 파티셔닝 전략으로 2가지 파티션 분배 전략을 가지고 있다. 1) 라운드 로빈 (Round Robin) - Kafka 2.4 버전 이전 기본 파티셔닝 전략 2) 스티키 파티셔닝 (Sticky Partitioning) - Kafka 2.4버전 이상 기본 파티셔닝 전략 라운드 로빈은 순차적으로 메시지를 파티셔닝 하는 것이며, 요즘 사용하고 있는 카프카는 거의 대부분 "스티키 파티셔닝"일 것이다. 먼저 Kafka Producer에서 만들어진 메시지는 브로커의 특정 토픽 파티션에 들어가기 전, 파티셔너 (Partitioner)에 의해 "Batch"라는 단위로 모여 있다가, Batch 단위로 파티션에 send 된다. 즉 Pro.. 2024. 4. 4.
2. Kafka - CLI 환경에서 다양한 방식의 메시지 송/수신 테스트 하기 아래의 명령어를 통해 멀티파트 토픽을 만들어보자. 3개의 파티션으로 나눠져있는 토픽을 만든다. docker exec -it kafka kafka-topics --bootstrap-server localhost:9092 --create --topic multipart-topic --partitions 3 토픽을 특정 어플리케이션에서 카프카로 보냄으로써 자동 생성되도록 할 수도 있지만, --create 명령어로 직접적으로 만들어줄 수도 있다. 만들었던 토픽에 대해 설명을 보고 싶을 때에는, 이렇게 확인해볼 수 있다. docker exec -it kafka kafka-topics --bootstrap-server localhost:9092 --describe --topic multipart-topic 그러면 .. 2024. 4. 4.
1. Zookeeper란? Zookeeper의 실행 시 동작 이 글에 앞서 실행환경이 구성되어있지 않다면 아래의 글을 통해 실행환경을 구성하고 테스트해보자. 2024.02.15 - [Kafka] - Ubuntu에 Docker, Kafka, Kafka-UI, Redis, Zookeeper, Opensearch, Logstash 설치하기 주키퍼는 Kafka 클러스터를 관리하는 역할입니다. Zoo Keeper 이름 처럼 Zoo(동물원)을 Keeper(지키는) 역할입니다. 현재는 Kafka 3.X 대에 들어서면서 Zookeeper가 내장된 형태로 진행되는 Kraft 가 나온것으로 알고 있으나 아직 많이 사용되어 충분히 운영환경에서 쓰이지 않은 부분도 있어 여전히 Kafka + Zookeeper의 형태로 운영되는 경우도 많다. Zookeeper의 상세한 역할을 보면, 분산.. 2024. 4. 3.