
Producer: 처리해야 할 이벤트를 생성한다.
Kafka Cluster: 처리해야 할 데이터를 쌓아두는 곳
Consumer: 클러스터에서 하나씩 꺼내 순차적으로 데이터를 처리한다.
토픽: 주제별로 이벤트를 모으는 단위,
append 형식으로 추가된다.offset을 할당받게 되고 이 offset이 메시지를 식별할 수 있는 유니크한 값이 된다.offset을 기준으로 이벤트는 Consumer에 의해 순차적으로 처리되게 된다.Consumer도 파티션별로 따로 붙을 수 있어 병렬·분산 처리가 용이하다.
Producer는 데이터를 생성하고 Kafka Cluster에 전송하는 역할을 한다.Producer는 데이터를 생성하고 Kafka Topic으로 데이터를 보내는 역할을 한다.Producer는 데이터를 단일 Topic 혹은 여러 Topic에 보낼 수 있다. 또한 Topic 내 파티션에 분배한다.Producer가 여러 개일 경우 하나의 파티션을 기다릴 필요 없이 정해진 규칙에 따라 각각의 파티션에 저장하면 되기 때문에 데이터 처리 속도가 더 빨라진다.Consumer는 카프카의 Topic에서 데이터를 읽어오는 역할을 한다.Consumer는 토픽 내에 하나 이상의 파티션에서 데이터를 소비하고 처리한다.Consumer는 특정 토픽이나 파티션에서 데이터를 읽어오기 위해 Kafka Cluster에 연결된다.Consumer는 읽어오는 데이터를 로직에 따라 처리하거나 다른 시스템으로 전달할 수 있다.offset을 기록하여 자체적으로 읽은 데이터의 위치를 추적한다.Consumer는 중단된 지점부터 데이터를 다시 읽거나 특정 범위의 데이터만을 읽어올 수 있다.
Broker: 데이터의 저장과 전달을 관리, Producer로부터 전달된 데이터를 Topic에 저장하고 Consumer에게 필요한 데이터를 제공한다.Broker이다.Kafka Cluster는 여러 대의 Broker로 구성, 각 Broker는 데이터의 파티션을 관리하고 데이터의 복제와 장애 조치를 수행한다.Broker는 데이터의 처리량과 안정성 확보를 위해 확장 가능한 방식으로 설계되어 있다.ZooKeeper는 Kafka Cluster의 구성 정보와 상태를 관리하는 분산 형상 관리 도구이다.ZooKeeper는 Kafka Cluster의 구성 Topic의 메타데이터, Broker의 상태, Consumer 그룹들을 추적하고 유지한다.ZooKeeper는 Broker 간의 리더 선출, 동기화 이벤트 처리 등 분산 시스템 작업을 수행한다.Broker의 추가 및 제거, Topic의 생성과 삭제와 같은 Kafka Cluster의 구성 변경을 관리한다.ZooKeeper는 Kafka Cluster의 안정성과 일관성을 보장하는 역할을 수행한다.Kafka Cluster는 ZooKeeper + Broker를 말한다.Broker는 데이터의 저장과 전달을 관리하는 실제 저장소 역할을 한다.ZooKeeper는 클러스터의 구성 정보와 상태를 관리하는 관리자 역할을 한다.데이터 영속성
효과적인 대규모 트래픽 분산처리
안정성
ZooKeeper가 클러스터의 관리를 해주기 때문에 안정적으로 운영할 수 있다.