Data Engineering/HDFS

[Kafka] 카프카(Kafka) 에 대한 간단 스터디

쟈누이 2021. 6. 11. 14:22
반응형

출처: https://kafka.apache.org/090/documentation.html

 

1. 아파치 카프카란?


대규모로 발생하는 메시지성 데이터를 비동기 방식으로 중계하며,  대규모 트렌젝션 데이터가 

발생했을 때, 전송 받는 장소에서 과부하가 걸려 데이터가 손실되지 않도록 중간에 데이터를 버퍼링하면서 타겟 시스템에 안정적으로 데이터를 전송해줄 수 있는 아키텍처를 제공하고 있다.

 

  • 실시간으로 기록 스트림을 게시, 구독, 저장 및 처리할 수 있는 분산 데이터 스트리밍 플랫폼
  • 여러 소스에서 데이터 스트림을 처리하고 여러 사용자에게 전달하도록 설계
  • 중간에서 데이터를 버퍼링하면서 전송하는 데이터를 타깃 시스템에 안정적으로 전송해주는 중간 시스템의 역할
  • Pub-Sub 모델의 메시지 큐
  • 분산환경에 특화되어 있음

 

 

 

 

 

2. 카프카의 특징


1) 고가용성 및 확장성

  • 카프카는 클러스터로서 작동하며, fault-tolerant 한 고가용성 서비스 제공이 가능하다
  • 또한, 분산 처리를 통해 빠른 데이터 처리를 가능하게 한다.
  • 서버를 수평적으로 늘려 안정성 및 성능을 향상시키는 Scale-out이 가능하다.

 

2) 디스크 순차 저장 및 처리

  • 카프카는 메시지를 디스크에 순차적으로 저장한다.
  • 서버 장애시에도 메시지가 디스크에 저장되어 유실걱정이 없다
  • 순차적으로 저장되어 디스크 I/O 가 줄어들어 성능이 빨라진다.

 

3) 분산처리

  • 파티션이란 개념을 도입하여 여러개의 파티션을 서버에 분산시켜 나누어 처리 가능
  • 이로써 더욱 많은 데이터를 빠르고 부담없이 처리할 수가 있다.

 

 

 

 

3. 카프카의 구성


출처 : https://d2.naver.com/helloworld/6560422

 

 

카프카는 크게 프로듀서(Producer), 클러스터(Cluster), 컨슈머(Consumer) 로 구성되어 있다.

카프카는 클러스터를 중심으로 프로듀서가 데이터를 push 하면, 컨슈머가 이를 pull 하는 구조이다.

 

1) 프로듀서(Producer)

  • 메시지를 생산하여 카프카의 토픽으로 메시지를 보내는 역할을 하는 애플리케이션, 서버 등을 일컬음
  • 즉, 데이터를 발생시키며, 카프카 클러스터에 적재하는 프로세스

 

2) 클러스터(Cluster)

클러스터는 위와같이 구성되어 있으며

  • 카프카 서버를 구성하는 브로커
  • 분산 코디네이션 시스템인 주키퍼
  • 데이터를 관리하는 토픽
  • 토픽당 데이터 분산처리를 맡고 있는 파티션
  • 모든 읽고 쓰기 등 연산을 담당하는 리더와
  • 리더의 데이터를 복사하는 역할의 팔로워로 구성되어 있다.

 

3) 컨슈머(Consumer)

  • 데이터를 출력하고 처리하는 역할을 맡고 있다.
  • 쉽게 말해서 프로듀서가 생산한 데이터를 소비하는 것이다.
  • 파티션을 관리하고, 파티션 리더에게 메시지(데이터)를 요청하는 역할을 맡고 있다.

 

 

 

 

4. Kafka 의 주요 개념


1) Producer 와 Consumer 의 분리

  • 프로듀서와 컨슈머는 별개로 동작
  • 덕분에 높은 확장성을 제공, producer, consumer 는 각각 필요에 의해 scale-in, scale-out 하기에 용이한 구조

 

 

2) Push 와 Pull 모델

  • Pull 은 컨슈머가 필요할때 브로커로부터 메시지를 가져와 처리하는 형태
  • 다양한 컨슈머의 처리형태와 속도를 고려하지 않아도됨
  • Push 는 요청을 즉시 보내거나 메시지를 한번에 처리하기위해 buffering 을 할 수가 있음

 

 

3) 메시지 ( 이벤트 ) 전달 컨셉

  • kafka 는 메시지 전달을 할 때 보장하는 여러가지 방식이 존재
  • At most once (최대 한번) : 메시지가 손실될 수 있지만 재전달은 하지 않음
  • At least once (최소 한번) : 메시지는 손실되지 않지만, 재전달이 일어난다
  • Exactly once (정확히 한번) : 메시지는 정확히 한번 전달이 된다.

 

 

 

 

 

5. 카프카의 활용


카프카는 시스템 및 애플리케이션 간 데이터를 공유하는 스트리밍 데이터 파이프라인과 이를 사용하는 시스템에도

구현되어 있다. IT 운영과 전자상거래와 같은 실시간 데이터 가용성이 필요한 활용 사례에 유연하게 쓰일 수 있다.

 

특히, 초당 수백반개의 데이터 포인트를 처리할 수 있어 빅데이터 과제에 매우 적합하다. 

최근 사물 인터넷 및 소셜 미디어와 같이 기하급수적으로 늘어나는 데이터들에 의해 시스템의 부담이 

가중되고 있으며, 이에 대처할만한 플랫폼으로써 카프카는 적극 추천되어지고 있다.

 

반응형