카프카 멀티 클러스터 환경에서 성능을 더 높일 수 있는 구조를 고민하다가 네이버 D2에서 Parallel Consumer를 설명한 글을 읽었다. 내용 설명이 너무 잘 되어 있어서 퍼오게 되었다. Kafka를 사용하면서 메시지 동시 처리량을 늘릴 수 있는 가장 쉬운 방법 중 하나는 파티션을 증가시키는 것입니다. 다만 파티션 수는 한번 늘어나면 줄일 수 없기에 신중해야 합니다. Log&Metric 조직에서는 Kafka를 활용하여 사내 로그 관리 시스템을 운영하고 있습니다. 방대한 양의 로그를 빠르게 처리하려다 보니 파티션 수가 굉장히 늘어나 있었으며 많은 파티션 수로 인한 사이드 이펙트도 존재했습니다. 파티션을 늘리지 않고도 동시 처리량을 늘리기 위해 고민하던 중 Parallel Consumer라는 라이브러..
MessageQueue/Kafka
메시지 전달 Message 객체를 이용하여 보내고 header에 아래와 같은 값들을 포함하여 전송 할 수 있다. KafkaHeaders.TOPIC KafkaHeaders.PARTITION_ID KafkaHeaders.MESSAGE_KEY KafkaHeaders.TIMESTAMP TOPIC: kafka에서 발행할 데이터에 대한 각각의 명세들의 이름 PARTITION_ID: 어떤 파티션 아이디에 보낼지 정할 수 있음 MESSAGE_KEY: 데이터 메세지의 키를 설정 TIMESTAMP: 데이터를 보낸 시간을 정함 폴더 구조 컨트롤러: RestAPI에서 요청을 받은 후 카프카에 토픽을 보냄 리스너: 카프카에서 데이터를 발행하면 리스너에서 구독하고 있다가 요청이 발생하면 정해진 로직을 처리함 메세지: 실제로 보낼..
출처: https://velog.io/@seungyeon/카프카-무엇이고-왜-필요할까 카프카 데이터 플랫폼의 최강자 1장을 읽고 정리한 내용입니다. 배경지식 MOM(Message Oriented Middleware) : 메시지 지향 미들웨어1.1 다른 미들웨어 종류: RPC 방식, ORB 방식1.2 미들웨어: 어플리케이션들을 연결시켜, 서로 데이터를 교환할 수 있게 해주는 소프트웨어1.3 메시지 지향: 메시지 전달을 통해 데이터를 교환할 수 있게 만들어주는 시스템. Message Broker2.1 MOM 기반으로 메시지 전송을 담당하는 시스템.2.2 Publisher(송신자)로부터 전달받은 메시지를 Subscriber(수신자)로 전달해주는 중간 역할 → 응용 소프트웨어 간에 메시지 교환 담당2.3 이때,..