Anything

Kafka 개념 정리

씬프 2021. 3. 20. 17:47
반응형

Kafka?

Kafka는 스트리밍 데이터를 다루기 위한 미들웨어와 그 주변 생태계를 말한다.

Kafka는 pub-sub 모델의 메시지 큐, 분산환경에 특화되어 설계된다.

기존의 RabbitMQ와 같은 다른 메시지 큐보다 훨씬 빠르게 처리한다.

 

Pub-sub 모델 (발행 / 구독)

Pub-sub은 메시지를 특정 수신자에게 직접 보내는 것이 아니다.

Publisher는 메시지를 topic을 통해 카테고리화한다.

receiver는 받기 원하는 메시지의 topic을 구독(Subscribe)함으로 메시지를 읽어온다.

 

Kafka에 주요 개념

topic, partition

하나의 topic에는 여러 개의 partition으로 구성될 수 있으며, partition 내에 로그 별로 offset이 지정되어 있다.

메시지가 생성될 경우 partition에 append된다. 파티션은 늘리면 줄일 수 없기 때문에 주의해야 한다.

병렬처리로 빠른 데이터 처리를 할 수 있다.

Producer, Consumer

Producer는 메시지 생산 주체로 메시지를 생산해 broker(kafak 서버)에 전달한다. key 값을 통해 특정 partition을 지정할 수 있다. Consumer는 메시지 소비 주체로 topic을 구독하고 스스로 조절하여 메시지를 소비한다. offset을 기억해 down되었다가 다시 살아나도 이어서 읽어온다. Consumer는 Group이 있으며 반드시 topic의 파티션은 Consumer Group과 1:N 매칭이 되어 있다.

Consumer 하나가 Down 되어 하나의 partition에 대한 소비가 멈추면 Rebalance 상황이 오게 된다. 그룹 내에서 offset의 값을 공유하기 때문에 그룹 내의 다른 Consumer가 해당 partition을 이어서 소비하게 된다.

Broker, Zookeeper

broker는 카프카 서버를 말하고, zookeeper는 분산된 메시지 큐의 정보를 관리한다. 카프카를 실행하기 위해 반드시 실행되어야 한다.

Replication (복제)

broker에 대한 복제의 경우 수평적으로 스케일 아웃이다. 하나의 서버만 Leader로 Producer가 메시지를 쓰고 Consumer가 소비하는 것을 담당하고 나머지는 Follower가 된다. 나머지 Follower는 Leader와 싱크를 맞추고, Leader가 죽었을 경우, Follower 중 하나가 Leader의 역할을 대신하게 된다.

 

어디서 Kafka를 쓸까?

가장 먼저, 대용량 메시지를 분산 처리하기 위해 사용한다.

그리고 아키텍쳐의 복잡성을 해결하기 위한 데이터 허브로 사용한다. (관리에 용이, 효율적)

'Anything' 카테고리의 다른 글

SQL 기초 (Oracle DB)  (0) 2021.03.29
MVC 패턴  (0) 2021.03.26
Git convention  (0) 2021.03.09
Git 명령어 정리  (0) 2021.02.10
GCP에 Flask  (0) 2021.02.08