Kafka란?
- 대용량 데이터 스트림을 안정적으로 처리하고 관리하기 위한 분산 스트리밍 플랫폼
- Pub-Sub 모델의 메시지 큐 형태로 동작한다.
- 데이터 시스템의 복잡도가 증가하면서 시스템관리, 데이터 파이프라인 관리가 어려워졌는데, 카프카를 사용하면 데이터 흐름을 중앙(카프카)에서 관리할 수 있게 된다.
- 아파치 소프트웨어 재단에서 개발하고 관리하며, 데이터 스트림을 효율적으로 수집, 저장, 처리, 전송할 수 있는 확장 가능한 시스템을 제공
Kafka 구성
- Topic
- Producer가 데이터를 게시하고, Consumer가 Topic으로 데이터를 구독한다.
- Producer
- 데이터를 생성하고 Kafka에 데이터를 게시
- Broker
- Kafka 클러스터의 각 서버를 Broker라 한다.
- 데이터를 저장하고 Consumer에게 데이터를 제공한다.
- Consumer
- 특정 Topic에서 데이터를 읽고 처리한다.
- Partition
- 각 Topic은 하나 이상의 Parition으로 나누어진다.
- 데이터를 병렬처리하고 저장하기 위한 단위
- Partition이 여러개이면 분산처리하기 때문에 순서를 보장하지 않는다.
- Replication
- 데이터 내구성을 보장하기 위해 여러 Broker에 복제한다.
- 데이터 손실을 방지한다.
- Zookeeper
- 분산 애플리케이션 관리를 위한 시스템
- 분산 메시지큐의 메타 정보를 중앙에서 관리하는 역할
Kafka 특징
- 여러대의 서버로 구성된 클러스터로 운영되며, 대용량 데이터를 처리하고 확장할 수 잇다.
- Producer와 Consumer 모두 배치 처리가 가능하다.
- 디스크에 메시지를 저장해서 영속성(persistency)를 보장한다.(Default로 일주일 저장)
Kafka에 대해서 아주 간단하게 정리했다. 스프링을 가지고 간단한 예제를 정리할 예정이다.
'Data Infra > Kafka' 카테고리의 다른 글
[Kafka] Linux에서 kafka 설치 방법 (2) | 2024.09.26 |
---|