반응형

전체 글 83

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

#2 EasyCalendar Flutter 구현

짤막 흥보: 호구홍시 조대봉 (인스타 툰) 개요 Flutter로 구현한 Client Web 관련 리뷰 개발 중 이슈사항 리뷰 Project Structure main: main class main_state_page: 시작페이지, 로그인 체크 calendar_page: 일정 확인 / 등록 페이지 main_exception: custom exception network_client: REST 요청 관련 모듈 리뷰 1. main class를 분리하는 의미가 없는듯하다. 2. main_state_page의 의미가 많이 퇴색되었다. Google 인증도 main_state_page에 넣었어야 했다. 3. 구현해 보니, 각 page에는 widget 생성 관련 로직만 넣고, 비즈니스? 로직은 외부로 빼는 것이 좋을 ..

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

Webclient 동작 원리 및 Configuration

개요 Webclient는 Spring Webflux에 포함된 외부 요청 / 응답에 대한 Handling을 담당하는 모듈이다. 기존 RestTemplate의 요청 응답 사이의 동기성을 해결하고, 보다 효과적으로 서버 리소스를 사용하기 위해 등장했다. 내부적으로 비동기적으로 구성되어 있으며, 구현은 Spring Webflux를 활용했다. WebClient 사용 분석 WebClient는 총 4단계로 요청 -> 응답 처리를 추상화하였다. Http Config → Reqeust Config → Exchange → Response Handling 각각 - http 기본 설정 (socket 설정 포함) - 요청 정의 - 발송 - 응답 처리 1. Build with Config WebClient.builder() ....

개발 일지 2023.05.30

#1 EasyCalendar 기획 및 설계

개요 일정 정리를 위한 Calendar 관리는 제 삶에 필수적인 사항입니다. 하지만, 일정 입력 시 UX 적으로 번거로운 부분이 있습니다. 가령 반복적이지만 비 정기적인 일정 (운동, 모임 같은)을 입력할 때 날싸선택 -> 내용 입력 -> 시간 입력 -> 장소 입력 등등의 과정을 거치며 조금 더 편하게 입력할 수 있지 않을까 합니다. 기획 EasyCalendar란 반복적으로 일어나는 컨텍스트를 템플릿 화 하여, 반복되는 내용을 미리 입력해 놓고, 간편하게 등록하는 웹 서비스이다. 전체적인 구성으로는 4 페이즈로 나누어집니다. 1. 로그인 / 구글 연동 페이즈 - 최초 EntryPoint에서 p-bear 로그인 연동을 통해 로그인 및 토큰 발급 - 서비스 진입 시 구글 연동을 확인하며, 구글 연동 실패 /..

Kafka Connect 사용성 검토

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

개발 일지 2023.05.24
반응형