반응형

Kafka란?

apach 재단의 kafka는 pub-sub 구조의 메세지 큐이며 분산 클러스터 환경에 특화되어있습니다.
기존의 Rabbit MQ보다 TPS가 높다는 장점이 있습니다. 그 외에도 클러스터 구성, fail-over, replication과 같은 여러 특성이 있습니다

pub-sub 구조란?

publisher - subscriber의 약자로 둘이 직접적으로 메세지를 주고 받는것이 아닌 중간에 Topic을 두고 해당 topic에 publish와 subscribe 하는 구조입니다

Kafka의 구성요소

다음과 같은 여러 구성요소가 있습니다

topic, partition, offset

producer, consumer, consumer group

broker, zookeeper

replication

topic, partition, offset

 

 

kafka에 지정된 topic에 메세지가 저장되며, topic은 여러 parition으로 나눠질 수 있습니다. partition안에는 offset이라는 메세지의 위치를 나타내주는 것이 있습니다. consumer가 offset을 사용하여 어디까지 consume했는지 알 수 있습니다


(출처 : https://kafka.apache.org/documentation/)

producer, consumer, consumer group

producer는 메세지를 생산(밑에 그림에서 write)하는 주체이며 consumer는 소비(read)하는 주체입니다
producer와 consumer는 각각 독립적입니다


(출처 :https://www.quora.com/Whats-the-difference-between-partition-number-and-replication-factor-in-Kafka)

consumer group은 producer가 생성한 메세지는 여러개의 파티션에 저장되어 있습니다
그래서 consumer들은 하나의 토픽을 읽어가기 위해 여러 소비자의 group을 만드는데 그것이 consumer group입니다


(출처 : https://blog.cloudera.com/scalability-of-kafka-messaging-using-consumer-groups/)

그리고 consumer group은 특정 consumer가 장애 발생시 다른 그룹내의 consumer가 대신 읽을수 있게 되어 대처가 빠릅니다

broker, zookeeper

broker는 카프카 서버 각각을 뜻합니다. 동일한 노드 내에서 여러개의 broker를 띄울 수 있습니다.
zookeeper는 분산 메세지큐의 정보를 관리해주는 역할을 합니다

Replication

kafka에서는 replication 수를 임의로 지정하여 topic을 만들 수 있습니다(broker 갯수보다 적거나 같게)
topic-A는 replicatioin-factor 3개 ,topic-B는 replicatioin-factor 2개인 경우이다

 

 

 

전체 구조

  • 네이버 블러그 공유하기
  • 네이버 밴드에 공유하기
  • 페이스북 공유하기
  • 카카오스토리 공유하기