정의 : 분산 메시지 스트리밍 플랫폼으로, 주로 실시간 데이터 스트리밍을 처리 하는 데 사용됩니다. 대용량의 데이터를 빠르게 처리하고, 여러 시스템 간에 데이터를 전달할 수 있는 강력한 툴
장점 : 고가용성, 빠른 처리
단점 : 순서보장이 어렵다. 아주 작게 사용이 어렵다.
Producer(생산자)
> 데이터를 Kafka로 보내는 클라이언트, 생산자는 데이터를 토픽(Topic)에 게시합니다.
Consumer(소비자)
> 토픽에서 데이터를 가져가 처리하는 클라이언트, 소비자는 특정 토픽을 구독하고, 데이터를 처리하여 다른 시스템으로 넘기거나 분석을 수행할 수 있습니다.
Topic(토픽)
> Kafka에서 데이터를 구분하는 논리적인 스트림 단위, 생산자가 보낸 데이터는 특정 토픽에 게시되며, 소비자는 이 토픽에서 데이터를 구독
Broker(브로커)
> Kafka의 서버, Kafka 클러스터는 여러 개의 브로커로 구성되며, 각 브로커는 데이터를 저장하고 클라이언트와 상호작용하며 메시지를 관리합니다.
> Kafka 클러스터 : 브로커들이 모여 하나의 클러스터를 이루고, 데이터를 분산 저장하고 처리
Partition(파티션)
> 하나의 토픽은 여러 파티션으로 나뉘며, 각 파티션은 독립적인 순서를 유지, 이로 인해 Kafka는 병렬 처리와 확장이 용이
> 각 파티션의 데이터는 오프셋(offset)이라는 번호가 붙으며, 소비자는 오프셋을 통해 데이터를 읽습니다.
Zookeeper
> Kafka는 Zookeeper를 통해 클러스터 상태를 관리하고, 브로커 간의 메타데이터를 동기화합니다. Zookeeper는 Kafka의 중요한 메타데이터를 관리하고, 브로커의 상태를 모니터링합니다.
Replication(복제)
> 데이터는 복제(replication) 되어 저장됩니다. 각 파티션은 리더와 팔로워 파티션으로 나뉘고, 리더가 주로 데이터를 처리하며 팔로워가 데이터를 복제합니다. 복제를 통해 데이터 손실을 방지하고 내결함성을 보장