본문 바로가기

Kafka

[Kafka] Producer, Consumer 설정에 따른 partition과의 상호작용 방식 (2023.10.10) 1. 서론 기본적으로 kafka는 순서제어가 되는 것으로 알려져 있다. 그러나, 특정 topic에 대해 consume 하였을 때 partitioning 전략에 따라 순서 제어가 잘 되지 않는 케이스가 발생 할 수 있다. 이러한 케이스를 방지하고 상황에 맞게 데이터를 consume하기 위해서는 내부 동작에 대해 이해하고 record가 어떤 파티션에 저장되는지에 대해서 어느정도의 지식이 필요하다고 판단이 되었다. 2. Kafka Partition에 대한 이해 Kafka는 topic이라는 단위를 통해 여러개의 record를 저장한다. partition이 하나일 경우에는 FiFO 형태로 일반적인 rabbitmq와 유사하게 record가 적재된다. 그러나 topic이 여러개의 partition으로 구성 될 경우,.. 더보기
[Kafka] Kafka에서의 에러 핸들링에 대한 생각정리 (2024.02.22) 0. Table Of Contents 1. 서론 2. Dead Queue의 사용 3. 문제가 생긴 offset과 error type을 기록 4. offset을 기록 하고, retention기간이 지나면 데이터를 archiving 한다. 1. 서론 현재 백엔드 팀 일부 프로젝트에서는 message를 관리하고 이를 적절한 곳에서 consume하기 위해 kafka를 사용하지만, 이에 대해서 exception handling이 잘 되고 있지 않으며 각 프로젝트 별로도 다르게 설계 중인 것으로 파악이 되었다. 따라서 kafka exception handling 어떻게 하면 잘 했다고 소문이 날지 생각해보게 되었으며, 내가 고민한 방법들을 적어보았다. 2. Dead Queue의 사용 처리가 되지 않은 message.. 더보기
[Apache Kafka] Kafka Data Ordering issue (2023.01.26) 0. Table Of Contents 0. Table Of Contents 1. 서론 2. 문제점 2.1. partition이 하나일 경우의 데이터 ordering test 2.2. partition이 복수개의 경우 2.2.1. kafka clustering 2.2.2. data ordering test 3. 문제점 분석 4. 해결법 4.1. partitioning key 4.2. sticky partition 1. 서론 현재 기획중인 데이터 파이프라인의 경우 아래와 같은 특성을 지니고 있다. 하나의 source가 아닌 다양한 환경의 source에서 데이터를 받는다. 현장 local server가 존재하지만, 통계 및 분석을 local server에서 지원하게되면 disk 및 성능 문제가 발생 할 수 있.. 더보기