대용량 분산 메시징 시스템?

Apache Kafka(아파치 카프카) — 대용량 분산 메시징 시스템

  • LinkedIn에서 개발
  • 대용량의 실시간 로그처리에 특화된 아키텍처 설계를 통하여 기존 메시징 시스템보다 우수한 TPS
  • 메시지를 메모리가 아닌 파일시스템에 저장, 페이지 케시를 통해 성능보장
  • kafka에서는 파일 시스템에 저장된 메시지를 네트워크를 통해 consumer에게 전송할 때 zero-copy기법을 사용하여 데이터 전송 성능향상

Kafka 는 발행-구독 모델을 기반으로 producer — broker — consumer로 구성

  • producer가 특정 topic의 메시지를 생성한뒤 broker에 전달
  • broker가 전달받은 메시지를 topic별로 분류하여 적재
  • 해당 topic을 구독하는 consumer 들이 메시지를 가져가 처리
    (broker가 push 하지 않고 , consumer가 pull 한다.)

kafka는 확장성과 고가용성을 위해 broker 들이 클러스터로 동작하도록 설계

클러스터된 broker들 간의 분산처리는 zookeeper가 담당

서버로그 파일 > filebeat > logstash > elasticsearch

위와 같이 로그를 elasticsearch 로 적재하도록 하고 있을 때.

트래픽이 몰리게 되면 대용량 로그처리를 해야한다.

kafka cluster에서 파일시스템으로 메시지를 저장하여 처리하기 때문에 로그유실을 줄일수있고 logstash > elasticsearch 의 중간단계에 kafka cluster 라는 buffer를 두기 때문에 급격한 트래픽으로 발생되는 메시지 유실과 부하를 줄일 수 있을거라 …. 생각된다.

Written by

엘디는 사랑입니다.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store