반응형

Kafka 16

ksqlDB 란

ksqlDB란?2017년 Confluent에서 오픈소스로 공개한 이벤트 스트리밍 데이터베이스이다.Kafka Streams + Kafka Connect로 구성되며, SQL을 인터페이스로 채용했다.이는 스트림처리 및 데이터 통합을 단순화시키는 효과를 가진다.특징대화형 작업환경을 제공SQL로 토폴로지를 표현하여 유지보수성 향상SQL 인터페이스로 인한 “상대적”으로 낮은 진입 장벽connect와 streams를 한번에 관리하여 아키텍처를 단순화Streams를 활용한 기능적 확장성을 제공간편한 설치 및 클라우드 지원데이터 탐색에 최적화LicenseksqlDB is licensed under the Confluent Community License.Confluent Community License: https://..

개발 일지 2024.05.27

[Kafka] Parallel Consumer

Parallel Consumer란? Confulent.inc에서 개발한 Open Source로 consumer의 consume이 parallel 하게 동작하도록 구현했다. 주요 목적은 분산 Consume을 위해 partition이 과도하게 늘아나는 비합리성을 해결하기 위함이다. Before 기존 Consumer의 구조는 Consume의 주체는 Single Thread로 동작한다. 1. Consumer는 설정된 size 만큼 message를 읽는다(consume). 2. 설정된 offset 전략에 따라서 모든 message 처리가 완료될 때 까지 blocking 한다. 위 그림은 consume 프로세스 중 delay 될 수 있는 상황을 도식화했다. 4번 message가 web request 이슈로 dela..

개발 일지 2024.03.19

Micrometer Log Tracing (feat. Spring Boot 3)

Micrometer란 Vendor-neutral application observability facade micrometer는 observability의 파사드(고수준 인터페이스)를 제공해주는 프로젝트이다. observability는 Application의 가시성을 제공해주는 것을 말하며, 이는 Application 내에서 발생하는 process를 외부로 제공해주는 것 이다. JVM -based Application라면 ventdor에 상관없이 적용할 수 있다. Project Develop History 2016 [Spring] Create tracing library(Spring Cloud Sleuth) from Spring Cloud team 2017 [Micrometer] Micrometer Pr..

개발 일지 2023.12.14

#2 Session Connector Server 구현

개요 FlagWar 관련 개발을 한동안 바빠서 소흘했었네요... 이제 슬슬 다시 재개하려 합니다. 이번 구현한 사항은 client와 session을 유지하며, 메시지를 보낼 client를 찾아서 서버 push를 보낼 수 있는 서버입니다. EX) A, B가 X라는 reference로 서버와 session을 유지하고 있을 때, X로 향하는 메시지가 A, B 모두에게 전달될 수 있어야 함 요구사항 요약 1. 서버는 Client와의 Session을 유지할 수 있어야 한다. 2. 서버에 연결된 Client는 자신을 식별할 수 있는 TAG 정보를 서버에 저장 및 삭제할 수 있어야 한다. 3. 서버는 메시지를 수신하여 TAG 기반으로 Client에게 메시지를 전달 할 수 있어야 한다. 4. 서버는 Scale-out이..

Kafka Consumer #4 Offset Commit Strategy

개요 Kafka Consumer의 Commit 설정 및 전략에 대한 조사 Kafka Commit Config name Desc Default enable.auto.commit Auto-Commit 사용 여부 true auto.commit.interval.ms Auto-Commit 사용 시 Commit을 수행할 시간 (ms) 5000 AUTO-Commit enable.auto.commit : commit 여부 auto.commit.interval.ms : commit interval 시간 public void maybeAutoCommitOffsetsAsync(long now) { if (autoCommitEnabled) { nextAutoCommitTimer.update(now); if (nextAutoC..

개발 일지 2023.06.22

Kafka Consumer #3 Consume 로직

개요 Consum 과정은 polling(fetch) + commit offset으로 볼 수 있다. Broker로부터 Date를 가져와서 처리 후 처리된 offset만큼 commit하는 과정이다. - kafkaConsumer가 initialize 하면서 Broker로 부터 커밋된 offset 정보를 받아온다. - polling을 통해 Data를 받는다. - commit을 통해 offset을 올린다. 1. Fetch Offset 1. poll 호출을 받으면 우선 모든 구독된 토픽/파티션에 offset이 있는지 확인한다. 2. 만약 하나라도 offset 정보가 없다면 resfresh offset 로직이 동작한다. 3. ConsumerCoordinator는 OffsetFetch Reuqest를 만들고, futu..

개발 일지 2023.06.21

Kafka Consumer #2 Partition Assignor Strategy

개요 Kafka Consumer에 대한 세부 조사 #1 글에 이어서 Consumer Partition Assignor 파티션을 할당하기 위한 Interface consumer 설정의 partition.assingment.strategy 로 구현체를 세팅할 수 있다. ConsumerGroup의 정보와, Topic의 Partition 정보를 받아서, 배분한다. 5개 정도의 구현체가 있다. Custom한 전략도 구현 가능하다. Consumer Rebalancing 전략은 Broker의 Coordinator가 아닌 Consumer들이 정한다. 따라서 Rebalance에서 발생하는 모든 오퍼레이션은 Consumer (Leader)가 관장하여, coordinator는 leader가 오퍼레이션 하기 위한 브로커 역할..

개발 일지 2023.06.15

Kafka Consumer #1 Startup / Rebalance Flow

개요 Kafka Consumer에 대한 세부 조사 Kafka Client와 Kafka Broker의 rebalance flow 및 requset / response data 조사 Kafka Consumer Assignor 관련 조사 Kafka Consumer STW 관련 조사 Consumer Startup Group Coordinator 란 Kafka Broker에서 Consumer Group을 관리하기 위한 컴포넌트 기본적으로 Consumer Group 별로 존재 Cluster내 임의의 broker에 생성 됨 Consumer Group내 member의 변동을 감지하고 Rebalance를 관장 kafka topic을 이용해서 group의 metadata를 유지 총 3가지 단계로 coordinator와 c..

개발 일지 2023.06.14

Expand Kafka Cluster

개요 Kafka Cluster를 확장할 시 발생하는 이펙트에 대한 조사 Broker Data Reassignment Strategy 단순 Broker Add 기본적으로 Broker가 추가되는 경우 기존 topic 및 Data에 대해서는 아무런 작업을 진행하지 않는다. 앞으로 추가되는 topic에 대해서 신규 브로커가 포함된 형태로 Cluster가 동작한다. Migrate data to new Broker 수동적으로 트리거링하여 기존 데이터를 새 Broker에 마이그레이션 할 수 있다. 시스템 중단 없이 작업 가능한 방법 내부적으로 다음 프로세스를 적용하여 마이그레이션이 진행됩니다. 1. 신규 Broker를 기존 파티션의 follower로 지정 2. 신규 Broker는 기존 파티션의 모든 Data를 rep..

개발 일지 2023.06.13

Kafka Connect 사용성 검토

개요 - 데이터 파이프라인 생성 시 반복 작업을 줄이고 효율적인 전송을 이루기 위한 애플리케이션 - 반복작업에 대해서 매번 Producer, Consumer 애플리케이션의 배포/운영해야 하는 비효율 보완 - Connect 를 이용하면 특정한 작업 형태를 템플릿으로 만들어 놓은 Connector 를 실행함으로써 반복작업을 줄일 수 있음. - Kafka 브로커와 별도의 클러스터를 구성하며 Connector 가 실행되는 환경을 제공 장단점 장점 단점 관리 용이 모니터링 가능 개발 생산성 최적화 및 유지보수되는 pre-build connector 시스템 복잡성 증가 보안 문제 가능성 증가 (타 시스템 연동 때문) 제한된 기능 Confluent Platform 소개 Confluent Platform은 여러 소스 ..

개발 일지 2023.05.24
반응형