(주)피플러스 빅데이터
  • (02) 6315-1234

BIGDATA_PRJ

KT Home IoT 서비스 분산처리 시스템 개발

Kafka-Storm 기반 실시간 분산처리 시스템

본문

T HOME IOT 지능형 서비스 (POC) 전체 구성도


032b8d9b23bc885cec4fb8f49db40317_1464761065_9183.PNG

ConsumerGroup 서버의 역활

 

  • 3MP Kafka 로부터 IoT 단말 이벤트를 수집합니다.
  • KakaoTalk 으로부터 대화 이벤트를 수집합니다.
  • DSS Storm 에서 발생시킨 상황 이벤트를 수집합니다.
  • UI 관리자 화면에서 발생시킨 시뮬레이션 이벤트를 수집합니다.
  • HomeManager 로부터 대화 이벤트를 수집합니다. (HomeManager  에서 대화처리 경우)
  • 수집된 이벤트 데이터를 Filtering 후 가입자별/장비별로 분류하여 DSS 전용 Kafka로 DSS용 이벤트를 Produce  합니다.
  • Event Mapper 는 DB  이벤트 테이블(event)에 정의된 이벤트만 처리하도록 필터링 한 후 DSS Kafka 로 이벤트별 Topic 에 맞게 produce 해 줍니다.


Kafka :네트윅 큐잉 분산 메시지 버퍼

 

 

  • Topic 별로 메시지 피드를 보관 : 토픽 메시지는 여러 파티션에 분할해서 보관함
  • 메시지 브로커 분산처리 가능(Kafa Cluster): metadata.broker.list=192.168.0.13:9092, 192.168.0.14:9092
  • Consumer Group 별 수신 채널 복제 병렬화 가능
  • Cousumer Port URL = Zookeeper URL zookeeper.connect=192.168.0.13:2181
  • Topic 별 메시지 FIFO

Storm

032b8d9b23bc885cec4fb8f49db40317_1464761152_1337.PNG
 

 

  • Topology
    - 데이터 처리를 정의한 그래프
    - Spout와 bolt로 구성됨
  • Spout
    - Topology의 시작점
    - 일반적으로 외부에서 데이터를 가지고 오는 용도로 사용
  • Bolt
    - Topology에서 처리하는 모든 작업의 최소 단위
    - 필터링, 데이터베이스와의 통신을 비롯한 외부 통신 등을 수행한다.
  • Tuple
    - Key/value pair로 구성되어 있는 데이터 조각
    - 데이터의 흐름은 tuple들(sequence of tuple, stream)로 구성
    - Bolt는 이전 spout/bolt에서 전달된 tuple들을 사용 작업 처리
    - Bolt는 topology 구성에 따라 다음 bolt로 tuple들을 단순, 갱신 또는 추가하여 전달(emit) 가능
  • Node
    - Cluster를 구성하는 물리적 장비
  • Nimbus
    - Storm cluster의 master
    - Topology를 관리
    - Cluster 전체에 1개만 단독 기동
  • Supervisor
    - Worker를 관리
    - 각각의 node에 1개만 기동(추천)
  • Worker(Process, Listener)
    - Topology가 실행되는 Process
    - 1개의 slot을 차지하며 정해진 port로 listen(보통 6700 port부터 순차적)
  • Executor(Thread)
    - Spout, Bolt, Worker main이 실행되는 thread
    - 성능에 실질적인 영향을 주며 parallelism 값으로 설정
Storm 서버 선택 배경
  • IoT 장비에서 전달되는 많은 이벤트를 실시간으로 분산 처리하기 위한 시스템이 필요함 -> Storm Cluster 가 Job 을 bolt 단위로 쪼개서 분산처리를 해 줌 -> Cluster 구조여서 서버 가용성이나 확장성이 용이함(Scalable).
  • 다양한 시나리오를 동적으로 구현하기 위한 구조가 필요함 -> Storm Topology 를 새로 추가하기만 하면 새로운 시나리오 적용 가능한 Flexible 한 구조임 -> 작은 기능 단위의 Job 을 bolt 단위로 나누어 사용할 수 있는 장점이 있음.
  • 다량의 이벤트를 버퍼링 해 줄 수 있는 Kafka 와 연동이 잘 되는 구조임
Vert.x 를 이용한 WebSocket Server와 HTML5의 WebSocket이용

032b8d9b23bc885cec4fb8f49db40317_1464761194_0672.PNG



KT는 스마트홈과 사물인터넷(Internet of Things)를 결합한 홈 IOT사업인 ‘GIGA 홈IoT 서비스사업을 추진 중
사업 차별화 요소 중 하나인 홈IoT기기의 지능화로 집이 실시간으로 예측,추론을 통해 사용자에게 알맞은 서비스를 제공할 필요가 있음
홈IoT기기 지능화 위해 ‘가구 단위 실시간 예측분석을 통한 자가제어’와 ‘상황인지 자연어 제안/추천을 통한 제어’을 구현해야함
Kafka/Storm 기반의 실시간 빅데이터 분산처리 시스템으로 실시간 처리 성능 확보
각 단말(조명, 도어락, 창문, 가스밸브, 가전제품등) 이벤트, 상황 이벤트(날씨, 재실여부등)별 또는 조합의 토폴로지 시나리오 설계 및 구현 (IFTTT 구현)
플러인 방식의 단말 이벤트 추가