반응형

1. 정리 목적

  • Kafka에 대한 기본 개념을 살펴본다.
  • Kafka의 기본 구성을 살펴본다.
  • Kafka의 아키텍처를 살펴본다.
  • Kafka를 개인적으로 활용했던 부분을 간단하게 공유한다.

 

2. Kafka란?

  • MOM(Message Oriented Middleware) 소프트웨어 중 하나로서 대규모로 발생하는 메시지성 데이터를 비동기 방식으로 중계하는 역할
  • 시스템으로부터 대규모 트랜잭션 데이터가 발생하였을 때 중간에 데이터를 버퍼링 하면서 타깃 시스템에 안정적으로 전송해 주는 중간 시스템이 필요한데, Kafka가 그와 관련된 강력한 기능과 아키텍처를 제공

 

3. Kafka 구성

  • Broker : Topic을 기준으로 메시지를 관리
  • Producer : 특정 Topic의 메시지를 생성한 뒤 해당 메시지를 Broker에 전달, Broker가 전달받은 메시지를 Topic 별로 분류하여 쌓아 놓으면 해당 Topic을 구독하는 Consumer들이 메시지를 가져가서 처리
  • Zookeeper : Broker에 대한 분산 처리

 

4. Kafka 아키텍처

Kafka의 아키텍처는 하기 처럼 현 상황에 맞게 아키텍처를 구성할 수 있다.

4.1 도메인이 단순한 경우

  • Kafka는 클러스터 방식에 따라 세 가지 아키텍처 구성이 가능
  • Zookeeper를 반드시 이용
  • 1대의 Kafka 서버만 설치하고, 1개의 Broker만 구성한 아키텍처
  • 대량의 발행/소비 요건이 없고, 업무 도메인이 단순할 때 이용

 

4.2 메시지 처리를 분리 관리해야 할 경우

  • 1대의 Kafka 서버에 2개의 Broker를 구성한 아키텍처
  • 물리적인 Kafka 서버가 1대 이므로 역시 대량의 발행/소비 요건에는 사용하기 어려움
  • 업무 도메인이 복잡해서 메시지 처리를 분리 관리해야 할 때 이용

 

4.3 복잡한 메시지 송/수신 활용하는 경우

  • 2개 이상의 Kafka 서버에 멀티 Broker로 구성한 아키텍처
  • 대규모 발행/소비 데이터 처리에 적합
  • 물리적으로 나눠진 Broker 간의 데이터 복제가 가능하여 안정성이 높음
  • 업무 도메인별 메시지 그룹을 분류할 수 있어 복잡한 메시지 송/수신에 활용에 적합

 

5. Kafka 활용

개인적으로 Kafka를 활용하여 사용했을 때 부분을 공유 하면 하기와 같다.

(실시간 로그)

5.1 이슈 발생으로 인한 Kafka 활용 모색

  • Kafka를 활용하지 않았을 때 곧바로 타깃 저장소인 HBase에 전송할 경우 HBase에 장애가 발생하면 Flume의 Channel에 전송하지 못한 데이터들이 빠르게 쌓이면서 곧바로 Flume의 장애로 이어짐
  • 실시간으로 발생하는 데이터들을 수집 불가능해져 데이터 유실 발생

 

5.2 Kafka 도입

  • Flume이 실시간 데이터를 수집해 Kafka Topic에 전송하면 Kafka는 전송받은 데이터를 Topic에 임시로 저장하고 있다가 Consumer 프로그램이 작동해 Topic에서 데이터를 가져감
  • 아주 빠르게 발생하는 데이터를 실시간으로 수집하게 되면 이를 최종 목적지에 전달하기 전 중간에서 안정적인 버퍼링 처리가 필요
  • 매우 빠른 데이터는 Flume 입장에서 부담스러우나 분산 환경의 대규모 중간 저장소인 Kafka가 완충 역할을 함으로 안정적인 수집 아키텍처를 구성

 

5.3 Kafka 분산 환경 구성

  • Kafka를 대규모 분산 환경으로 구성
  • HBase 장애가 발생해도 Kafka에서 데이터를 저장해 놓았다가 HBase가 복구되면 곧바로 재처리 가능
  • Flume이 수집한 데이터를 Kafka의 Topic에 비동기로 전송함으로 수집 속다가 빠름


※ 참조 url :

- https://kafka.apache.org/081/documentation.html

 

Apache Kafka

Apache Kafka: A Distributed Streaming Platform.

kafka.apache.org

- http://blog.mmlac.com/log-transport-with-apache-kafka

 

Log Transport and Distribution with Apache Kafka 0.8: Part II of “Scalable and Robust Logging for Web Applications” - #workH

This post describes how to use Apache Kafka to transport logs and distribute them for analysis. Part 2 of the series "Scalable and Robust Logging for Web Apps"

blog.mmlac.com

- [도서]실무로배우는 빅데이터기술 https://product.kyobobook.co.kr/detail/S000001766428

 

실무로 배우는 빅데이터 기술 | 김강원 - 교보문고

실무로 배우는 빅데이터 기술 | 전문 개발자가 아니어도 약간의 소프트웨어 지식만으로 빅데이터의 A~Z까지 기술들을 구현하고 경험해 볼 수 있는 파일럿 프로젝트 형식으로 구성했다. 빅데이터

product.kyobobook.co.kr

반응형

+ Recent posts