프로젝트 Selum-MosquittoBroker
성과
*2018 서울 산학연 기업 연계 연구과제
'초연결 사회의 기반이 되는 메시징 기술 탑재 어플라이언스개발' 과제 입니다.*
2018 캡스톤 디자인 대상 수상
KCC 2018 'MQTT 기반 실시간 자동차 및 보행자 위치기반 서비스 시스탬 설계' 논문 1저자
2018 한성 공학경진대회 은상수상
WHAT IS Selum-Mosquitto broker?
프로젝트 개요
많은양의 메시지를 효율적으로 처리하기 위해 subscribe, publish기능을 이용할 IOT 표준 프로토콜인 MQTT프로토콜을
사용하고 초당100만건의 메시지와 1000만 사용자의 메시지 처리를 위해 mqtt프로토콜을 확장하여 네트워크 Traffic을
최적화 하기위해 MQTT 브로커인 Mosquitto broker를 모델로 확장 작업을 수행하였다. MQTT네트워크 패킷중 비어있는
QOS3을 위치기반 데이터를 관리하기 위해 확장하고 위치기반 Topic관리를 위한 내부 로직 수정이 이루어졌다.
프로젝트 구현
Broker 는 기존의 모든 기능을 전부 수행 할 수 있고 Client 의 위치에 따른 subscribe tree를 이동시키는 기능을 수행한다,
우선 LBSServer에서 LbsManager로 qos3 현재 mqtt에서 사용하지 않는 제어 플래그 비트를 이용하여
(Client id , before location1 ,before location1 ,after location1, after location2) 의 메시지 형식으로 보낸다.
이때 broker에서 qos3 로 오는 메시지타입을 3개로 구별하여 제어를 하는데 우선 Client 의 Subscribe tree 탐색시간을 줄이고
이전의 지역명의 트리노드에 빠르게 접근하여 효율적인 트리탐색을 위함이다. 첫 번째로 이전 구역명이 모두 없을 때 의 경우
Client 들이 broker에 접속후 최초로 지역명을 받은경우이다. 이때 connect 헀을 때 List 에 저장한 Context를 가지고 subscribe
tree 에 넣어준다. 두 번째, 이전 행정구역명 중에 ‘구’ 항목이 없을 경우 Client 가 같은 구에 있지만 동만 바뀐 경우를 의미하고
이때 broker는 이전 행정구역 동을 바뀐 행정구역 동으로 context를 이동시킨다. 세 번째 구와 동 의 행정구역이 모두 바뀐경우
이전 구와 동의 subscribe tree에서 context를 제거한후 현재의 구와 동으로 subscribe tree를 바꿔주게 된다.
담당 역할
Broker의 Qos3사용하기 위한 프로토콜확장
네트워크 Traffic을 줄이기 위한 context내부 로직 수정
LBSManager커맨드로 Client의 Topic관리를 위한 Hierarchy 로직 구현
작품 설계도
https://github.com/chl8263/Mqtt_LBS_Mosquitto_Broker