상세 컨텐츠

본문 제목

Apache Kafka - 설명

Developer/ETC

by 웰크 2019. 12. 10. 18:00

본문

미리보는 한줄요약!

카프카는 로그 및 기타 데이터를 토픽별로 구분하여 파일로 관리하고,

컨슈머의 요청이 있을때 데이터를 보내주는 기능을 한다.

 

 

Apache Kafka의 기본 구성 요소와 동작

Kafka는 발행-구독(publish-subscribe) 모델을 기반으로 동작하며 크게 producer, consumer, broker로 구성된다.

 

Kafka의 broker는 topic을 기준으로 메시지를 관리한다. 

Producer는 특정 topic의 메시지를 생성한 뒤 해당 메시지를 broker에 전달한다. 

Broker가 전달받은 메시지를 topic별로 분류하여 쌓아놓으면, 해당 topic을 구독하는 consumer들이 메시지를 가져가서 처리하게 된다.

 

Kafka는 확장성(scale-out)과 고가용성(high availability)을 위하여 broker들이 클러스터로 구성되어 동작하도록 설계되어있다. 

클러스터 내의 broker에 대한 분산 처리는 아래의 그림과 같이 Apache ZooKeeper가 담당한다.

 

기존 메시징 시스템과의 차이점

(기존 메시징 시스템: ActiveMQ, RabbitMQ 등)

 

  • 파일 시스템에 메시지를 저장하기 때문에 별도의 설정을 하지 않아도 데이터의 영속성(durability)이 보장된다.

  • 기존의 메시징 시스템에서는 broker가 consumer에게 메시지를 push해 주는 방식인데 반해, Kafka는 consumer가 broker로부터 직접 메시지를 가지고 가는 pull 방식으로 동작한다. 따라서 consumer는 자신의 처리능력만큼의 메시지만 broker로부터 가져오기 때문에 최적의 성능을 낼 수 있다.
  • 파일 시스템을 활용한 고성능 디자인
    Kafka는 기존 메시징 시스템과는 달리 메시지를 메모리대신 파일 시스템에 쌓아두고 관리한다.
    메시지는 하드디스크로부터 순차적으로 읽혀지기 때문에 하드디스크의 랜덤 읽기 성능에 대한 단점을 보완함과 동시에
    OS 페이지 캐시를 효과적으로 활용할 수 있다.

(이미지 출처: The Pathologies of Big Data)

 

 

 

참고 사이트
카프카 https://epicdevs.com/17?category=460351
주키퍼 https://engkimbs.tistory.com/660

'Developer > ETC' 카테고리의 다른 글

Apache Kafka - 구성  (0) 2019.12.19
Mac에서 SSH키 생성하기  (0) 2019.11.25
Redmine CKEditor 설치  (0) 2019.07.28
Synology Redmine 플러그인 설치  (0) 2019.07.24
Synology Redmine 설치 하기  (1) 2019.07.23

관련글 더보기