빅토리 코딩
article thumbnail
728x90
반응형

Kafka 

Kafka는 Pub/Sub(Publisher/Subscriber) 모델을 사용하는 분산 스트리밍 플랫폼으로, 대량의 데이터를 실시간으로 처리하고 전달하는 데 사용된다. Kafka는 대용량의 데이터를 안정적이고 빠르게 처리할 수 있는 고성능 메시징 시스템으로 분류된다

Kafka cluster

kafka cluster는 여러개의 kafka 서버(브로커)를 구성하고있는 집합체이다.

Kafka 아키텍처

Kafka 아키텍처는 Producer, Broker, Consumer로 구성된다. Producer는 Kafka Topic에 데이터를 생성하고, Broker는 Kafka 클러스터에서 데이터를 저장하고 분배한다. Consumer는 Broker로부터 데이터를 가져와 처리한다.

 

Topic은 분산 데이터 저장소로 여러 Partition으로 나누어지며, 각 파티션은 메시지를 순서대로 저장한다. 각 메시지에는 고유한 오프셋이 부여되는데 이것은 메시지를 찾는 데 사용된다. Consumer는 파티션의 일부 또는 모든 메시지를 소비할 수 있다.

Broker

kafka 서버 하나를 말하며 Broker여러개로 구성된 집합체면 kafka Cluster라고 한다.

Producer

Producer는 데이터를 생성하고 Kafka에게 전송하는 역할 이다. 데이터는 일련의 바이트로 구성되어있고 데이터를 전송할 때 Topic을 지정하고 Broker의 주소를 알고 있어야 한다.  만약 Broker 중 하나에 장애가 발생하면 다른 Broker로 전송된다.

Consumer

Consumer는 Kafka 에서 데이터를 읽어오는 역할 이다. Topic의 파티션 중 하나를 가져와서 메시지를 읽는데 일반적으로 Topic의 모든 파티션을 동시에 읽지는 않는다. 각 파티션에서 가장 마지막으로 읽은 오프셋을 추적하여 오프셋을 기준으로 메시지를 읽는다. 따라서 Consumer가 다시 시작될 때 이전에 읽은 위치에서부터 다시 읽기 시작한다.

ZooKeeper

Kafka 클러스터의 중앙 집중식 서비스로, 분산 시스템에서 고유 ID를 할당하고, 데이터를 저장하며, 클러스터 내의 리더 선출 및 기타 관리 작업을 수행한다. ZooKeeper는 분산 애플리케이션에서 일관성과 신뢰성을 유지하는 데 중요한 역할을 한다.

Kafka Broker 상세

Topic

kafka에서 데이터를 관리할 때 기준이 되는 주제이다. 각 topic은 여러개의 partition으로 나누어질 수 있으며, Producer는 특정 topic으로 데이터를  publisher(발행)하고 Consumer는 특정 topic을  subscribe(구독) 하고 있으면 데이터를 받는다.

Partition

Producer로 부터 전달된 데이터를 저장하는 물리적단위이다. 하나의 Topic에는 여러 partition이 구성된다.  각 Partition은 고유한 Offset을 가진다. 이로인해 동일한 Topic에 대해 여러 Consumer가 분산하여 처리할 수 있으며, 각각의 Consumer는 해당 Partition의 일부 데이터만을 처리하게 된니다. partition의 수는 Kafka cluster의 브로커 수에 따라 결정된다. 

offset

partition에서 사용하는 고유한 값이다. 여러 Consumer가 동시에 Topic에서 데이터를 읽을 때, 각 Consumer가 어느 메시지까지 읽었는지를 추적하기 위한 단위로 사용된다.

Kafka 기타 개념

Consumer Group

같은 topic을 구독하고 있는 Consumer의 집합이다.  Consumer Group 내에서 고유한 Consumer들은 ID를 가지며, Consumer Group 내의 모든 Consumer는 Topic의 모든 Partition에 대해 분산하여 처리합니다. 데이터 처리의 병렬성과 이중화를 제공하며, Topic에 대한 처리량을 높일 수 있다. 또한, Consumer Group 내의 Consumer들은 서로 독립적이기 때문에, 각 Consumer의 처리 성능에 영향을 받지 않고 Topic의 처리량을 높일 수 있다.

Coordinator

Consumer Group의 동작을 관리하는 역할이다. Consumer Group 내의 Consumer가 장애가 발생하여 매칭된 파티션의 데이터를 읽어 올수 없게 되면 장애가 발생한  Consumer에게 매칭된 partition과 offset을 확인하여 정상 동작하는 다른 Consumer에게 매칭하여 준다.
728x90
반응형

'Open Source > messageQueue' 카테고리의 다른 글

Kafka (zookeeper) 아키텍처 구현[2]  (0) 2023.03.30
profile

빅토리 코딩

@빅토리 코딩

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!

검색 태그