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 |