본문 바로가기
IT

Apache Kafka

by ¢Å‰¤㏄ 2021. 11. 5.

데이터 관련 업무나 데이터 업무에 궁금증이 있으신 분들을 위해서 간단하게 Apache Kafka에 대해서 말씀드려 볼까합니다.

 

■ Apache Kafka란?

Apache Kafka(아파치 카프카)는 LinkedIn에서 개발된 분산 메시징 시스템으로써 2011년에 오픈소스로 공개되었다. 대용량의 실시간 로그처리에 특화된 아키텍처 설계를 통하여 기존 메시징 시스템보다 우수한 TPS를 보여주고 있다.

 

① 분산 스트리밍 플랫폼

② 데이터 파이프라인 구성시 사용되는 오픈소스 솔루션 (Batch, Stream)

③ 대용량의 실시간 로그처리에 특회되어 있는 솔루션

④ 데이터를 유실없이 안전하게 전달 가능 (메시지 시스템)

⑤ Clustering 가능, 한쪽 서버 다운시 fault-torelant한 신뢰성 있는 오픈소스 솔루션으로 데이터를 처리

⑥ 서버 Scale out 가능

⑦ Pub-Sub 구조

 

 

■ Apache Kafka 구조

 

■ Apache Kafka 용어

① Producer

Kafka에 Event(message)를 넣는 클라이언트 어플리케이션

 

② Cousumer

Topic을 구독하고 kafka에 존재하는 이벤트를 얻어 처리하는 클라이언트 어플리케이션

 

③ Topic

Event(message)가 등록되는 곳으로 Producer는 Topic에 Event를 게시

-> Counsumer는 해당 Topic으로부터 Event(message)를 가져와 처리

 

④ Partition

Topic은 여러 Broker에 분산저장되고 이렇게 분산된 topic을 partition이라고 함

병렬처리가 가능하도록 토픽을 나눌 수 있고, 많은 양의 메시지 처리를 위해 파티션의 수를 늘려줄 수 있음

출처 : http://kafka.apache.org/081/documentation.html

 

④ Zookeeper

분산 애플리케이션을 위한 코디네이션 시스템. 분산 애플리케이션이 안정적인 서비스를 할 수 있도록 분산되어 있는 각 애플리케이션의 정보를 중앙에 집중함. 컨슈머 혹은 카프카와 직접 통신하면서 구성 관리, 그룹 관리 네이밍, 동기화 등의 서비스를 제공

 

 

■ 디스크 순차 저장 및 처리

  • 메세지를 메모리에 저장하는 기존 메시징 시스템과는 달리 메세지를 파일 시스템에 저장
  • 파일 시스템에 메세지를 저장하기 때문에 별도의 설정을 하지 않아도 데이터의 영속성(durability)이 보장됨.
  • 디스크가 순차적으로 저장되어 있으므로 디스크 I/O가 줄어들어 속도가 빠름

 

■ 활용 경험

Messaging 시스템으로서 실시간으로 데이터를 추가하고 처리하는 부분에서는 만족할만한 Performance 보여줌

다만, Clustering시 각 서버에 모두 zookeeper를 설정해줘야 하는 부분으로 인해 세팅해줘야 하는 부분이 필요

데이터를 disk에 사용함으로써 데이터 유실에는 확실한 강점

 

'IT' 카테고리의 다른 글

Apache Spark란?  (0) 2021.11.08
Cookie vs Local Storage vs Session Storage  (0) 2021.11.05
ELK stack이란?  (0) 2021.11.05
Druid (S3 direct 연동)  (0) 2021.11.05
Druid  (0) 2021.11.05

댓글