전체 글 506

Debezium MySQL CDC Source Connector - 1

CDC (Change Data Capture)CDC는 RDBMS와 NoSQL등의 Data Store시스템의 변경 데이터를 내부적으로 기록하고 있는 Redo Log/Bin Log/ WAL 등의 내부 트랜잭션 로그파일에서 (redo log같은) 변경데이타를 Capture하는 소프트웨어를 지칭한다.DB 내부 트랜잭션 로그 파일에서 변경 데이터를 추출하므로 소스 DB 성능에 큰 영향 없이 대용량의 변경 데이터를 매우 빠르게 추출하고 준 실시간으로 타겟 DB에 연동한다.DBMS 복제 (replication) 수준의 안정적이고 정확한 데이터 추출이 가능하다.성능과 안정성이 중요한 많은 중요 DBMS시스템에서 CDC를 활용한다. DB 복제 vs CDC 비교데이터 복제는 DB의 가용성을 극대화 하기 위해서 Primar..

Cloud/kafka-connect 2024.07.22

JDBC Sink Connector

카프카 토픽에서 메시지를 읽어들여서 타겟 DB 로 데이터 입력/ 수정/ 삭제를 수행한다.Connect의 Consumer가 주기적으로 카프카 토픽 메시지를 읽어서 타겟 DB로 데이터 연동한다.RDBMS에서 데이터 추출은 JDBC Source Connector , CDC Sourec Connector등을 사용하지만 RDBMS로 데이터 입력은 주로 JDBC Sink Conenctor를 사용한다.JDBC Sink Connector 생성{ "name": "mysql_jdbc_sink_customers_00", "config": { "connector.class":"io.confluent.connect.jdbc.JdbcSinkConnector", "tasks.max": "1", ..

Cloud/kafka-connect 2024.07.20

JDBC Source Connector

JDBC Source Connector는 RDBMS별 JDBC Driver가 별도로 설치되어야 한다. JDBC Source Connector는 JDBC Drvier를 이용하여 DB 접속 및 데이터 추출을 수행 후 Producer를 이용하여 Kafka Broker로 데이터를 전송한다.JDBC Source Connector는 Source 시스템에 주기적으로 Query를 날려서 변경된 데이터를 추출하는 방식이다.Consumer는 아니지만 Consumer처럼 주기적으로 변경된 데이터를 추출하고 변경사항을 kafka에게 전송한다. JDBC Source Connector 모드 유형Incremental query 모드: 이전 데이터 추출 이후 새롭게 생성된 데이터나 업데이트된 데이터를 Kafka로 전송한다.모드 별로..

Cloud/kafka-connect 2024.07.16

Kafka Connect 개요

카프카 Connect는 Kafka 메시지 시스템(Broker/Producer/Consumer) 를 기반으로 다양한 데이터 소스 시스템(예: RDBMS)에서 발생한 데이터 이벤트를 다른 데이터 타켓 시스템으로 별도의 Kafka Client 코딩 없이 , Seamless하게 실시간으로 전달하기 위해서 만들어진 Kafka ComponentConnector = 여러 datasource 의 sink ,source 역할을 맡는다.Transformation = SMT(Single Message Transformation)Converter = Connector에서 보내는 message를 formatting을 해주는 역할이다.Connector가 source의 table을 변경을 계속 감지하고 있다가 insert된 row..

Cloud/kafka-connect 2024.07.11

Topic Segment

Kafka log , Segment카프카의 로그 메시지는 실제로는 segment로 저장이 된다.파티션은 단순히 파일 디렉토리만 되어 있고, 해당 파티션 디렉토리에 메시지 저장 segment를 file로 가지고 있다.파티션은 여러개의 segment로 구성되며 개별 segment는 데이터 용량이 차거나 일정 시간이 경과하면 close되고 새로운 segment를 생성하여 데이터를 연속적으로 저장한다.segment는 close 되면 더 이상 브로커가 write하지 않으며 read-only가 된다. 브로커는 여러개의 segment중 단 하나의 active segment에만 write와 read를 수행한다. 하나의 파티션은 단 하나의 active segment를 가진다. log.segment.bytes (broke..

Cloud/kafka-core 2024.07.09

ML HW & Systems. Lecture 5: Microarchitecture

from big picture (Architecture) to actual unit design (Mircro Architecture) , will not cover Circuit  accumulator = adding number (need to hold a number) , adder doesn't need to hold statethis takes O(N) to compute dot product of length n vectors. e.g) 8 cycles if n is 8 usping multiple multiplier will be faster but how to merge the results ,need adder treenow it takes 2 cycle to calculate 8 len..

Multi Node Kafka Cluster

멀티노드 카프카 클러스터분산 시스템으로서 카프카의 성능과 가용성을 함께 향상 시킬 수 있도록 구성스케일 아웃 기반으로 노드 증설을 통해 카프카의 메시지 전송과 읽기 성능을 거의 선형적으로 증가 시킬 수 있음데이터 복제를 통해서 분산 시스템 기반에서 카프카의 최적 가용성을 보장 멀티브로커 설치하기...broker.id=3...listeners=PLAINTEXT://:9094...# A comma separated list of directories under which to store log fileslog.dirs=/home/tony/kafka/data/kafka-logs-03server.properties를 총 3개 생성한다.새로운 zookeeper.properties를 만들고 아래처럼 변경해준다.# ..

Cloud/kafka-core 2024.07.02

Kafka File Producer App + File Consumer App

file에 텍스트가 추가될  때 마다 Producer 메시지를 전송하도록 구현한다.public class FileEventSource implements Runnable { public static final Logger logger = LoggerFactory.getLogger(FileEventSource.class.getName()); //주기적으로 file을 모니터할 기간. ms 단위. private long updateInterval; //모니터할 File 객체 private File file; //file에 변경사항이 발생했을 때 Producer를 이용하여 메시지를 전송하는 EventHandler private EventHandler eventHandler;..

Cloud/kafka-core 2024.06.30

Kafka Consumer - 03

Consumer의 subscribe, poll , commit 로직Consumer는 subscribe()를 호출하여 읽어 들이려는 토픽을 등록한다.Consumer는 poll 메소드를 이용하여 주기적으로 브로커의 토픽 파티션에서 메시지를 가져온다.메시지를 성공적으로 가져왔으면 commit을 통해서 __consumer_offsets에 다음에 읽을 offset을 기재한다.group meta data에 어떤 consumer가 어떤 partition을 consume하고 있다가 나와있지 __consumer_offsets에 나와있지 않다. 중복 읽기가 발생하는 상황consumer1이 poll만하고 아직 commit을 하지 않은 상황에서 고장이나서 종료되면conusmer2가 읽어야하는 부분은 5부터 읽어야된다. 읽기 ..

Cloud/kafka-core 2024.06.18