본문 바로가기

Data & Database

Kafka 개요 및 특징

Apache Kafka는 실시간으로 스트리밍 데이터를 수집하고 처리하는 데 최적화된 분산 데이터 스토어로, 스트리밍 데이터의 지속적인 데이터 유입을 처리하고 데이터를 순차적이고 점진적으로 처리할 수 있습니다.

 

Kafka의 주요 기능

  • 레코드 스트림 게시 및 구독
  • 레코드가 생성된 순서대로 레코드 스트림을 효과적으로 저장
  • 레코드 스트림을 실시간 처리

Kafka는 데이터 스트림에 적응하는 실시간 스트리밍 데이터 파이프라인과 애플리케이션을 구축하는 데 주로 사용됩니다. 메시징, 스토리지, 스트림 처리를 결합해 모든 과거 및 실시간 데이터의 저장 및 분석을 제공합니다. 

Kafka의 사용처

Kafka는 실시간 스트리밍 데이터 파이프라인과 실시간 스트리밍 애플리케이션을 구축하는 데 사용됩니다.

예를 들어,  활동 데이터를 받아 사람들이 웹사이트를 어떻게 사용하는지 실시간으로 추적하는 데이터 파이프라인을 만들려면 Kafka를 사용하여 스트리밍 데이터를 수집 및 저장하면서 데이터 파이프라인을 구동하는 애플리케이션에 읽기 서비스를 제할 수 있습니다.

Kafka의 동작 방식

대기열과 게시-구독이라는 두 가지 메시징 모델을 결합한 형식으로

대기열을 사용하면 데이터 처리를 여러 소비자 인스턴스에 분산할 수 있어 확장성이 뛰어나지만 병렬 작업이 되지않고

게시-구독 접근 방식은 병렬 작업이 가능하지만 모든 메시지가 모든 구독자에게 전송되므로 여러 작업자에게 작업을 분산하는 데 사용할 수 없습니다.

Kafka는 파티셔닝된 로그 모델을 사용하여 이러한 두 개의 솔루션을 통합하여 동일한 주제에 여러 구독자가 있을 수 있고 각 구독자에게 파티션을 할당하여 확장성을 높일 수 있습니다. 그리고 Kafka의 모델은 재생 기능을 제공하므로 데이터 스트림을 읽는 여러 독립 애플리케이션이 자체 속도에 따라 독립적으로 작동할 수 있습니다.

대기열
게시-구독

Kafka의 장점

확장성

Kafka의 파티셔닝된 로그 모델을 사용하면 데이터를 여러 서버에 분산할 수 있으므로 단일 서버에 담을 수 있는 수준 이상으로 데이터를 확장할 수 있습니다. 

신속함

Kafka는 데이터 스트림을 분리하므로 지연 시간이 매우 짧아 속도가 극도로 빠릅니다. 

내구성

파티션은 여러 서버에 분산되어 복제되며 데이터는 모두 디스크에 기록됩니다. 이렇게 하면 서버 장애로부터 데이터를 보호할 수 있어 데이터의 내결함성과 내구성을 높일 수 있습니다. 

Apache Kafka 와 RabbitMQ의 차이점

RabbitMQ는 메시징 큐 방식을 사용하는 오픈 소스 메시지 브로커로, 대기열은 노드 클러스터에 분산되어 있으며 선택적으로 복제되며 각 메시지는 단일 소비자에게만 전달됩니다.

특징 Apache Kafka RabbitMQ
아키텍처 Kafka는 메시징 큐와 게시 구독 접근 방식을 결합하는 분할된 로그 모델을 사용합니다. RabbitMQ는 메시징 큐를 사용합니다.
확장성 Kafka는 여러 서버에 파티션을 분산할 수 있도록 지원함으로써 확장성을 제공합니다. 대기열에 있는 소비자 수를 늘려 경쟁 소비자 전체로 처리를 확장합니다.
메시지 보존 예를 들어 정책에 기반한 경우, 메시지를 하루 동안 저장할 수 있습니다. 사용자는 이러한 보존 기간을 구성할 수 있습니다. 승인에 기반한 경우, 메시지가 소비되면 삭제됩니다.
다수의 소비자 Kafka에서는 일정 기간 동안 동일한 메시지를 재생할 수 있으므로 여러 소비자가 동일한 주제를 구독할 수 있습니다. 메시지는 소비될 때 제거되므로 여러 소비자가 모두 동일한 메시지를 받을 수는 없습니다.
복제 주제는 자동으로 복제되지만 사용자가 주제를 복제하지 않도록 수동으로 구성할 수 있습니다. 메시지는 자동으로 복제되지 않지만 사용자가 메시지를 복제하도록 수동으로 구성할 수 있습니다.
메시지 정렬 각 소비자는 분할된 로그 아키텍처로 인해 정보를 순서대로 수신합니다. 메시지는 대기열에 도착한 순서대로 소비자에게 전달됩니다. 경쟁 소비자가 있는 경우, 각 소비자는 해당 메시지의 일부를 처리합니다.
프로토콜 Kafka는 TCP를 통한 바이너리 프로토콜을 사용합니다. 플러그인을 통해 지원되는 고급 메시징 큐 프로토콜(AMQP): MQTT, STOMP.

 

참고 : https://aws.amazon.com/ko/what-is/apache-kafka/?nc1=h_ls

'Data & Database' 카테고리의 다른 글

Snowflake 개요 및 특징  (2) 2023.11.19
Chart.js로 데이터 시각화하기  (0) 2023.11.15
Kafka와 Spark의 차이점 & 유사점  (0) 2023.11.13
Spark의 개요 및 특징  (0) 2023.11.11
NiFi 개요와 특징  (0) 2023.06.29