Practice makes perfect

[BIGDATA Platform] 빅데이터 수집의 기술 : 카프카(Kafka) 본문

빅데이터/BIGDATA Platform

[BIGDATA Platform] 빅데이터 수집의 기술 : 카프카(Kafka)

kerpect 2020. 6. 10. 22:49

카프카(Kafka)란?

MOM(Message Oriented Middleware – 메시지성 데이터 처리에 최적화되어 있는 middleware, 비정형성) 소프트웨어 중 하나로 대규모로 발생하는 메시지성 데이터를 비동기 방식으로 중계하는 역할을 하며 실시간 처리에 사용합니다. 실시간 데이터 피드를 관리하기 위해 통일된, 높은 처리량, 낮은 지연시간을 지닌 플랫폼을 제공하는 것을 목표로 합니다.

링크드인에서 2011년에 개발되어 그 해 6월에 아파치 인큐베이터에 등록됐고, 2012년 10월 에 아파치 최상위 프로젝트로 승격되었습니다.

 

Kafka의 기능 : 원천 시스템으로부터 대규모 트랜잭션 데이터가 발생했을 때 중간에 데이터를 버퍼링하면서 타깃 시스템에 안정적으로 전송해 주는 강력한 기능과 아키텍처를 제공하는 중간 시스템입니다.

 

- 끊임없이 연이어서 저장되어질 때, 카프카를 사용합니다. 최근에는 스파크와 연동하여 스트리밍 방식의 데이터 처리 플로우를 구축하는데 널리 활용되고 있습니다. 모든 데이터 set이 메모리 위에 있을 때 가능한 기능이며, 메모리 위에서 사용가능한 스파크와 함께 연동을 통해서 긍정적인 반응을 가져올 수 있습니다.

 

kafka 홈페이지  : kafka.apache.org/

 

Kafka의 주요구성 요소 : Broker, topic, provider, consumer

 

Topic : Broker에서 데이터의 발행/소비 처리를 위한 저장소 기능을 하는 구성요소 입니다.

 

Broker : Topic 컨트롤러 역할로 Kafka Server를 의미하며, 한 클러스터 내에서 Kafka server를 여러 대 띄울수 있습니다.

 

Provider : Broker의 특정 Topic에 데이터를 전송(발행)하는 역할로서 애플리케이션에서 카프카 라이브러리를 이용해 구현 합니다.  

 

Consumer : Broker의 특정 Topic에서 데이터를 수신(소비)하는 역할로서 애플리케이션에서 카프카 라이브러리를 이용해 구현 합니다.

 

 

 

Kafka의 아키텍쳐

 

싱글 브로커/싱글 노드

: 1대의 카프카 서버만 설치하고, 1개의 Broker만 구성한 아키텍처로 대량의 발행/소비 요건이 없고, 단순한 업무 도메인에 이용합니다.

 

멀티 브로커/멀티 노드

:  2대 이상의 카프카 서버로 멀티 Broker를 구성한 아키텍처로 대량의 발행/소비 데이터 처리에 적합하며, 물리적으로 나눠진 브로커 간의 데이터 복제가 가능해 안정성이 높습니다 또한 업무 도메인별 메시지 그룹을 분류할 수 있어 복한 메시지 송/수신에 활용하면 적합합니다.