본문 바로가기

전체 글

Kafka Message Flow 살펴보기 [Consumer 편] Intro지난 글에서는 Producer에서 메시지를 발송하였을 때, message가 어떻게 처리되고 적재되는지 알아보았습니다. 이번 글에서는 적재된 메시지를 다시 꺼내어 처리할 때 consumer 동작 방식과 message(record) flow를 이해하는 것이 목표입니다.Consumer 구조Consumer는 크게 fetcher와 coordinator로 구성되어 있습니다.Fetcherpoll이 실행될 때, 적절한 크기의 record를 client에 return 하기 위해 Kafka Cluster로부터 record를 요청하고, client가 받기 직전에 메모리에 미리 저장하는 역할을 합니다.Fetcher 성능에 영향을 주는 Configurationfetch.min.byte ~ fetch.max.byte :.. 더보기
Kafka Message Flow 살펴보기 [Producer 편] Producer 구성요소 및 동작 방식각 구성요소 및 성능에 영향을 미치는 configuration은 아랫글을 참조합니다.AccumulatorKafka Cluster로 전송할 kafka record를 임시로 memory에 담고 있습니다. 담을 때 적용되는 주요 kafka producer configuration은 아래와 같습니다.Network Thread (io_loop)Accumulator에 쌓인 record를 Broker로 전송하는 역할을 합니다.Producer 성능에 직접적으로 영향을 주는 configurationbuffer.memory : kafka producer가 메시지를 보내기 전 메모리에 보관하는 전체 메시지 용량을 의미합니다. (Default : 32MB)max.request.size :.. 더보기
[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.. 더보기