MQTT

Jimin_Note·2022년 7월 27일
0
post-thumbnail

MQTT

: Message Queuing Telemetry Transfer

  • 디바이스 간 최소한의 전력과 패킷량으로 통신하기 위해 개발된 프로토콜
  • 원격 제어 및 측정 목적
  • M2M(Machine to Machine),IoT(Internet of Things) 방식의 사물 간 통신에 적합
  • 산업 분야에서는 주로 온도,습도,기압,조명,이산화탄소 등의 IoT 센서들이 그 정보를 주기적으로 Publish 하는 데에 사용

요구조건

  • 실시간 푸시 전송
  • 전력사용 최소화
  • 비동기 메시징
  • 신뢰성

경량화

  • 경량 메시지 포맷
  • 80~100kb 정도의 메모리 크기

유연성,확장성

  • 다수의 사용자와 디바이스 지원
  • 응용코드 변경없이 기능 확장 가능

MQTT의 구조

MQTT 브로커를 중심으로 Publisher(발행자->발신자)가 토픽을 발생하면 브로커가 이를 중개하고, Subscriber(구독자->수신자)는 관심있는 토픽을 구독하는 구조
발행자와 구독자는 서로 간에 직접 메시지를 주고받지 않음(비동기, 메세지 큐 방식)

<토픽이란?>

  • house/bedroom/temperature : 집의 침실의 온도계 센서
  • house/+/temperature : 집의 모든(+) 방의 센서
    + : 해당 레벨의 와일드카드
  • house/bedroom/# : 집의 침실의 모든(#) 센서
    # : 하위 레벨 모두를 지칭하는 와일드 카드

<Messge Queue(MQ)란?>
프로세스 및 프로그램 인스턴스가 데이터를 서로 교환할 때 사용하는 통신 방법
더 큰 개념으로는 메시지 지향 미들웨어(Messge Oriented Middleware : MOM)을 구현하는 시스템
MOM : 비동기 메시지를 사용하는 응용 프로그램 간의 데이터 송수진

MQTT 메세지 포맷

  • 고정헤더(Fixed Header):메세지 유형 정의
    메세지 타입:연결 및 Publish, Subscribe,Ping 등 14가지 유형으로 통신
    DUP 플래그:중복된 메세지인지, 처음 보낸 메시지인지 표시
    QoS 레벨:서비스의 품질향상을 위한 방법->전송된 메세지의 확인응답을 보장
    Retain:설정 시 새로운 구독자는 발행자의 발행을 기다리지 않고 즉시 최신 정보를 취함
    Remaining Length:전체 메세지의 크기를 계산(최대 메세지 크기 256mb 제한)
  • 가변 헤더(variable Header):프로토콜 이름과 저번, 토픽 이름 정의
  • 페이 로드(Payload):실제 전송되는 메세지

MQTT 메세지 타입

  • PUB = Publisher
  • SUB = Subscriber
  • BRO = Broker

QoS(Quality of Service)

MQTT 구성도

원격에 있는 현장의 온도(좌측 MQTT Gateway)를 측정하여 일정 수준에서 벗어나는 이상현상을 발생 시 경고를 알리고 즉시 대응할 수 있는 과정

MQTT 브로커 구축방법

  1. PC에 MQTT 브로커 설치
    MQTT 브로커 역할을 해줄 소프트웨어를 설치
  • Mosquitto(이클립스)
  • RSMB(IBM개발자 그룹)
  • RabbitMQ(wmWare)
  • Mqtt.js, eMQTT(GitHub)
  • ActiveMQ(Apache)
  • Mosca(node.js)
  1. MQTT 플랫폼 서비스 이용
    여러 IoT 플랫폼 업체에서 제공하는 MQTT서비스(부분 유료화)
  • AWS(Amazon)
  • Mosquito
  • IBM MQTT
  • Google Cloud
  • Cloud MQTT
  1. MQTT 브로커 제품 이용
    MQTT 브로커를 자체 구축할 수 있는 제품으로 사용자 환경에 맞게 클라이언트 수를 무한대로 운영 가능
  • MQTT.box
profile
Hello. I'm jimin:)

0개의 댓글