Kafka
-
[Kafka-Streams] Json 기반 Custom Serdes 구현하기Kafka 2024. 2. 17. 17:49
- 목차 들어가며. Kafka Streams 에서 JSON 기반의 데이터를 직렬화/역직렬화 할 수 있는 Custom Serdes 를 구현하는 방법에 대해서 알아보려고 합니다. 우선 이번 글에서 사용할 데이터는 Kaggle 에서 제공되는 Bank Client 데이터를 사용할 예정입니다. https://www.kaggle.com/datasets/henriqueyamahata/bank-marketing Bank Marketing source: https://archive.ics.uci.edu/ml/datasets/bank+marketing www.kaggle.com bank-additional-full.csv 파일의 간단한 형태는 아래와 같습니다. +---+-----------+--------+--------..
-
[Kafka] Transaction Coordinator 알아보기Kafka 2024. 2. 7. 23:02
- 목차 들어가며. Kafka Consumer 입장에서 Group Coordinator 가 존재하듯이, Kafka Producer 는 Transaction Coordinator 가 존재합니다. Kafka Producer 의 Transaction 처리를 위해서 특정 Broker 는 Transaction Coordinator 로써 동작하게 됩니다. Transaction Coordinator 는 어떻게 결정될까 ? 먼저 Transactional Producer 에 의해서 Transaction 이 최초로 실행되면, Transaction State 를 기록하기 위한 __transaction_state Topic 이 생성됩니다. Transaction Coordinator 는 하나의 Broker 입니다. 아래 이미지..
-
[Kafka] Rebalance 가 발생하는 경우들 알아보기 ( Rebalance Scenario )Kafka 2024. 2. 4. 15:08
- 목차 들어가며. 이번 글에서는 Rebalance 가 발생하는 여러가지 경우들에 대해서 자세히 알아보려고 합니다. 사용하게 될 Consumer 예제 코드는 아래와 같습니다. kafka-clients 2.8.1 모듈을 사용하였구요. CustomRebalanceListener 추가하여 Rebalance 가 발생하는 상황을 출력하도록 Consumer 프로그램을 작성하였습니다. package com.westlife.consumers; import org.apache.kafka.clients.consumer.*; import org.apache.kafka.common.*; import org.apache.kafka.common.serialization.*; import java.time.*; import jav..
-
[Kafka] Kafka Rebalance Protocol 알아보기 ( JoinGroup, LeaveGroup )Kafka 2024. 2. 4. 07:53
- 목차 Rebalance 란 무엇일까요?먼저 Rabalance 를 어휘적으로 살펴볼려고 합니다.Rebalance 는 Unbalance 인 상태를 해결하는 행위입니다.Partition 과 Consumer 사이의 관계가 Unbalance 상태가 될 수 있습니다.Unbalance 의 원인 제공이 Partition 일 수도 있고, Consumer 일 수도 있겠죠 ?Partition 의 갯수가 늘어나거나, 어떤 Consumer 가 먹통이 될 수 있죠.이러한 경우에 Partition 과 Consumer 사이의 적절한 매칭 관계에 문제가 발생하고 이러한 상태가 Unbalance 상태입니다.그리고 Kafka Broker ( 특히, Group Coordinator ) 는 Unbalance 를 감지하여 Rebalance..
-
[Kafka] API Version 알아보기 ( Protocol )Kafka 2024. 1. 31. 06:11
- 목차 들어가며.이번 글에서는 Kafka 에서 클라이언트와 브로커가 통신을 수행하기 위해서 사용되는 API Version 에 대해서 알아보려고 합니다.일반적으로 Broker 의 버전과 API Version 은 동일하게 사용하는 것이 권장됩니다.하지만 API Version 을 명시하지 않아도 Kafka Wire Protocol 상에서 적절한 API Version 을 추론할 수 있습니다.그래서 Kafka Client 모듈을 사용할 때에 API Version 을 명시하지 않아도 Consumer 와 Producer 를 쉽게 사용할 수 있죠. Confluent Version & Kafka Version.아래 페이지는 Confluent 의 버전과 카프카 버전에 대한 정보를 제공합니다.https:..
-
[Kafka Producer] Data Loss 는 언제 발생할까 ?Kafka 2024. 1. 21. 07:30
- 목차 함께 보면 좋은 글. https://westlife0615.tistory.com/474 Docker 로 Kafka Cluster 구축해보기. - 목차 소개. 저는 로컬 환경에서 카프카 관련 테스트를 진행하는 경우가 많이 생기더군요. 그래서 docker-compose 를 활용하여 Kafka, ZooKeeper 클러스터를 구축하는 내용을 작성하려고 합니다. docker-com westlife0615.tistory.com 들어가며. 카프카 프로듀서는 비즈니스의 요구사항에 따라서 Data Loss 를 허용할 것인지, Data Duplication 을 허용할 것인지를 결정해야합니다. Data Loss 를 허용하는 경우에는 서비스에서 데이터의 활용하는 속도를 늘리고, 시간을 감축시킬 수 있습니다. 웹사이트..
-
Kafka Controller 알아보기Kafka 2024. 1. 17. 17:48
- 목차 들어가며. 카프카는 여러개의 브로커들로 구성됩니다. 브로커의 역할은 토픽을 관리하고, 레코드들을 복제하며, 클라이언트인 Producer 와 Consumer 들과 소통해야합니다. 아래의 이미지는 브로커의 역할을 표현한 그림인데요. 3개의 브로커로 구성된 카프카 클러스터는 1개의 Leader Replica 인 Broker2 와 Follower Replica 인 Broker 1, 3 을 가집니다. Follower Replica 인 Broker 1 과 Broker 3 은 열심히 Broker 2 의 데이터들을 복제합니다. Follower Replica 의 큰 역할이 Replication 이기 때문이죠. 그리고 Leader Replica 인 Broker2 는 Client 와 통신하며 데이터를 생성하고 공급..
-
[Kafka] Replication 의 시간은 얼마나 걸릴까 ? ( kafka-reassign-partitions )Kafka 2024. 1. 14. 07:39
- 목차 들어가며. 이번 글에서는 하나의 실험을 진행하려고 합니다. 아래의 그림처럼 Replication Factor 을 1개 추가하여 모든 브로커에서 Partition 복제가 발생하는 경우, 얼마나 시간이 소요되는지를 파악하려고 합니다. 환경은 저희 로컬 컴퓨터 내에서 docker-compose 로 구현한 Kafka cluster 에서 진행하였습니다. 먼저 아래와 같이 test-topic 이라는 이름의 토픽을 생성하였구요. Partiiton 은 3, Replication Factor 는 2로 설정하였습니다. 한 Partition 당 400MB 의 용량을 가지도록 레코드를 추가하였습니다. Log File 의 크기는 아래와 같습니다. total 400M -rw-r--r-- 1 appuser appuser ..
-
[Kafka Consumer] Exactly-Once 구현하기Kafka 2024. 1. 13. 05:32
- 목차 들어가며. Kafka Consumer 는 하나의 Data Processor 로써 동작합니다. 그리고 처리한 데이터를 토대로 외부 Application 들과 상호작용하게 되는데요. 예를 들어, 조회한 Topic 의 레코드를 처리하여 데이터베이스에 삽입을 한다던지. 처리한 데이터를 또 다른 Topic 으로 Produce 하거나, Email 이나 SMS 전송을 시도할 수 있습니다. 이러한 상황에서 Kafka Consumer 가 FailOver 또는 Repartitioning 에 의해서 재시작하게 되면, 일부 데이터의 손실이나 중복 처리의 위험이 발생합니다. 데이터의 손실이 발생하는 경우. 데이터의 손실이 발생하는 경우는 Offset Commit 을 너무 빨리 시도하는 경우에 발생합니다. 먼저 아래의 ..
-
Kafka Consumer Configuration 알아보기 ( session.timeout.ms, heartbeat.interval.ms, auto.offset.reset, auto.commit.interval.ms )Kafka 2024. 1. 13. 05:31
- 목차 관련있는 다른 글. https://westlife0615.tistory.com/587 Kafka Consumer Configuration 알아보기 (fetch.min.bytes, fetch.max.wait.ms, max.partition.fetch.bytes) - 목차 관련있는 다른 글. https://westlife0615.tistory.com/588 Kafka Consumer Configuration 알아보기 ( session.timeout.ms, heartbeat.interval.ms, auto.offset.reset, auto.commit.interval.m - 목차 들어가며. 이번 글에서는 Kafka Consume westlife0615.tistory.com 들어가며. 이번 글에서는 K..