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