데이터베이스, 센서와 같은 이벤트 소스로부터 실시간 데이터를 이벤트 스트림 형태로 캡쳐하는 것으로 실시간성 데이터를 처리하거나 수집하는 많은 곳에서 사용이 가능하다.
이벤트 스트림 특징
주요 기능
특징
카프카는 고성능 TCP 네트워크 프로토콜을 통해 통신하는 서버와 클라이언트로 구성된 분산 시스템으로 다양한 환경에 배포가 가능하다.
서버 : 하나 이상의 서버 클러스터로 실행된다. 이 서버 중에는 브로커라고 하는 스토리지 계층을 형성한다. 카프카 커넥트를 실행해 이벤트 스트림으로부터 데이터를 지속적으로 가져오고 내보내고 관계형 데이터베이스 또는 기존 시스템과 통합한다. mission-critical한 사례를 구현할 수 있도록 카프카는 확장성이 뛰어나고 내결함성이 있다. 서버 중 하나에 장애가 발생하면 다른 서버가 작업을 인계받아 데이터 손실 없이 지속적으로 운영을 보장한다.
클라이언트 : 네트워크 문제나 시스템 오류가 발생한 경우에도 이벤트 스트림을 병렬, 대규모, 내결함성 방식으로 읽고 쓰고 처리하는 마이크로 서비스를 구축할 수 있다.
Event
무언가 일어난 일을 기록한 것으로 데이터를 읽거나 쓸 때 이벤트 형식으로 작업을 수행한다. 이벤트에는 "키","값","타임스템프" 및 선택적 메타데이터 헤더가 존재한다.
ex)
Event key: "Alice"
Event value: "Made a payment of $200 to Bob"
Event timestamp: "Jun. 25, 2020 at 2:06 p.m."
Producer
카프카에 이벤트를 쓰는 어플리케이션
Consumer
이벤트들을 구독하는 어플리케이션
카프카의 Consumer와 Producer는 분리되어 서로를 전혀 모른다. 그렇기 때문에 Producer는 Consumer를 전혀 신경쓸 필요가 없다. 이는 이벤트를 정확히 한번만 처리한는 등 카프카는 다양한 장점이 있다.
Topic
이벤트들은 토픽에 영구적으로 저장된다. 간단하게 말하면 토픽은 파일 시스템의 폴더와 유사하고 이벤트들은 폴더에 있는 파일들이다.
카프카의 토픽들은 언제나 multi-producer, multi-subscriber이다. 토픽은 0개 하나 그 이상 의 producer들이 쓸 수 있다. 여러 consumer가 소비할 수 있다. 이벤트들은 전통적인 메세징 시스템과는 다르게 이벤트를 소비해다 지워지지 않는다. 유저는 각 토픽별로 카프카가 이벤트를 얼마나 보존할지 정의해야 하고 보존 기간이 지난 오래된 이벤트들은 버린다. 카프카의 퍼포먼스는 데이터 사이즈와 일정하므로
Partition
토픽들은 나누어져 있다 이 뜻은 토픽은 여러 버킷들에 나누어져있다. 데이터의 분산 배치는 클라이언트 애플리케이션이 동시에 많은 브로커에서 데이터를 읽고 쓸 수 있도록 하기 때문에 확장성에 매우 중요하다. 새 이벤트가 토픽에 게시되면 토픽 파티션 중 하나에 추가된다. 동일한 파티션키가 있는 이벤트는 동일한 파티션에 기록되고 카프카는 지정된 주제 파티션의 모든 소비자가 항상 기록된 것과 정확히 동일한 순서로 해당 파티션의 이벤트를 읽도록 보장한다.
데이터 내결함성 및 고가용성을 만들기 위해 모든 주제를 지리적 지역이나 데이터 센터에서 걸쳐 복제할 수 있으므로 문제가 발생할 경우에 대비하여 데이터 복사본이 있는 여러 브로커가 있다. 브로커에 대한 유지 관리를 수행한다. 일반적으로 레플리케이션이 3개이다 항상 너의 데이터가 세곳에 복사된다. 이 복제본은