Kafka
-
Debezium Plugin 이 포함된 Kafka Connect Docker 이미지 만들기Kafka/kafka Connect 2023. 11. 21. 05:56
들어가며.이 글에서는 Debezium Connector Plugin 이 포함된 Kafka Connect Worker 의 Base Docker Image 를 만드는 내용을 작성합니다.https://debezium.io/documentation/reference/3.0/connectors/mysql.html Debezium connector for MySQL :: Debezium DocumentationMandatory field that describes the source metadata for the event. In a delete event value, the source field structure is the same as for create and update events for the sam..
-
Kafka Replication (메시지 복제) 이해하기Kafka 2023. 9. 21. 07:34
- 목차 Replication 이란 ? Topic 은 Kafka Message 들을 저장하고 관리하는 주체입니다. 이러한 Topic 은 여러 Partition 들로 나뉘어집니다. 기본값으로 제공되는 Partition 은 3개입니다. 그래서 Topic 으로 삽입되는 Kafka Message 들을 각각 Partition 으로 나뉘어져 저장이 됩니다. Partition 의 갯수만큼 N 분의 1로 저장되는 느낌이죠. 그리고 각 Partition 은 Replication 처리가 되어 여러 Broker 들로 복제되어 분산됩니다. Partition 의 Replication 은 카프카가 데이터의 Persistency, Consistency 그리고 Fail-Over 를 구축하는 방식입니다. Topic - Partitio..
-
kafka __consumer_offsets topic 이해하기Kafka 2023. 9. 18. 22:16
- 목차 키워드.OffsetConsumerConsumer Group 들어가며. 카프카는 "__consumer_offsets" 이라는 이름의 토픽을 가집니다. "__consumer_offsets" 토픽의 목적은 Consumer Group 이 조회한 토픽의 offset 들을 기록하는 것입니다. 예를 들어, "topicA" 라는 토픽이 있고 파티션의 개수는 3개입니다. 그리고 "groupA" 라는 이름의 Consumer Group 이 있고 각 파티션 별로 1개 메시지를 조회한 상황입니다. 이 상황의 "__consumer_offsets" 에는topicA-0 & groupA : 1topicA-1 & groupA : 1topicA-2 & groupA : 1의 기록이 생성됩니다. ( 참고로 Partition 의 이..
-
Kafka Consumer 개념Kafka 2023. 9. 13. 17:14
- 목차 * 소개Kafka Consumer 가 Kafka Broker 로부터 메시지를 읽어들이는 전반적인 과정을 설명하고자 합니다. * partition - consumerKafka Producer 가 생성하는 메시지들은 Topic 의 여러 Partition 에 분산저장됩니다. Kafka Consumer 가 특정 Topic 을 조회한다는 의미는 Topic 의 Partition 들을 개별조회하는 것을 뜻합니다. 만약 Topic A 의 Partition 이 4개라면 Kafka Consumer 들은 각각의 Partition 을 조회하게 됩니다. 그리고 Partition Consumer 의 매칭의 대전제는 N : 1 으로 적용되어야 한다는 것인데요. 하나의 Partition 을 2개 이상의 Consumer 가 ..
-
Kafka Producer Process (카프카 프로듀서 과정)Kafka 2023. 9. 9. 00:09
소개kafka producer 가 kafka broker 에게 메시지를 전송하는 과정에 대한 설명을 해보겠습니다. kafka 는 binary wire protocol 이라는 네트워크 프로토콜을 활용하여 브로커와 통신합니다. 여러가지 언어로 작성된 kafka client library 들 또한 binary wire protocol 을 구현한 결과물입니다. 효율적인 통신을 구현하기 위해서 여러가지 단계를 거치게 되는데 각 단계에 대해서 알아보겠습니다. ProducerRecordProducerRecord 는 kafka producer 와 kafka broker 가 통신하기 위해서 사용되는 데이터의 기본적인 형태입니다. ProduerRecord 의 형태는 대략 아래와 같은 구조체의 모양을 가지며, topic 부..
-
kafka consumerKafka 2023. 3. 2. 07:51
개요 kafka consumer 는 카프카 메세지를 소비하는 대상입니다. 카프카는 토픽이라는 영역에 메시지를 저장하게 되는데 토픽에 차곡차곡 저장된 메시지를 kafka consumer 는 하나씩 조회할 수 있습니다. 토픽은 파티션이라는 단위로 나뉘어져 있습니다. 대개 하나의 토픽은 둘 이상의 파티션으로 나뉘고, 카프카 메시지는 각각의 파티션에 나뉘어 저장이 되죠. 이때 kafka consumer 는 단독으로 하나의 토픽을 소비하기보단 파티션의 갯수만큼 생성을 하고 파티션 수와 consumer 의 수를 1:1로 매칭합니다. 그래서 파티션의 수만큼 동시 처리가 가능해집니다. 파티션의 수 만큼 카프카 소비자가 많아지면 이 소비자들을 관리하기 위한 단위가 필요해집니다. 이를 consumer group 이라고 부..
-
[Kafka Connect] SpoolDir Connector 구현해보기Kafka/kafka Connect 2023. 2. 24. 06:23
- 목차 들어가며.이번 글에서는 Kafka Connect 의 SpoolDir Source Connector 에 대해 알아보는 시간을 가지려고 합니다.SpoolDir Connector 는 Local File 을 읽어들이고 Record 를 생성하여 Kafka Topic 으로 푸시하는 구조를 가집니다. 간략한 구조는 아래와 같습니다.SpoolDir Source Connector 는 Local File 들을 Line by Line 으로 읽어들이고,레코드를 생성하여 지정된 Kafka Topic 으로 레코드를 저장합니다. 중요한 점은 SpoolDir 은 S3 나 Hadoop 과 같은 원격 저장소의 파일이 아닌 내부의 로컬 파일을 그 대상으로 합니다.그래서 SpoolDir Source Connector 의 지정된 디..
-
kafka producerKafka 2023. 2. 23. 05:45
개요 카프카를 활용하기 위한 cli 들이 존재합니다. 예를 들어, kafka-topics, kafka-console-consumer, kafka-console-producer 등이 쉘스크립트 형태로 존재하는데요. 해당 스크립트들은 카프카 콘솔 명령어라고도 불리며 1. 토픽을 관리하고, 2. 메시지의 생성과 소비를 담당하는 등 여러 명령어들이 존재합니다. kafka-acls kafka-broker-api-versions kafka-cluster kafka-configs kafka-console-consumer kafka-console-producer kafka-consumer-groups kafka-consumer-perf-test kafka-delegation-tokens kafka-delete-reco..
-
[Kafka] Kafka Cluster 구축을 위한 docker-compose 파일Kafka 2023. 2. 21. 16:16
- 목차 들어가며.이번 글은 Kafka 와 관련한 여러 테스트를 손쉽게 진행하기 위해서 Kafka 관련 Docker Compose File 들을 기록합니다. JdbcSourceConnector 실행을 위한 Cluster 구성.1개의 Kakfa Broker1개의 Zookeeper1개의 Kafka Connect WorkerKafka UI로 구성된 Docker Compose Yaml 파일입니다. cat /tmp/docker-compose.yamlversion: '3.8'services: zookeeper1: image: confluentinc/cp-zookeeper:7.8.0 hostname: zookeeper1 container_name: zookeeper1 networks: ..