MQTT 소개
MQTT란?
- MQTT는 M2M, IoT를 위한 프로토콜로서, 최소한의 전력과 패킷량으로 통신하는 프로토콜 이다.
- 따라서 IoT와 모바일 어플리케이션 등의 통신에 매우 적합한 프로토콜이다.
- MQTT는 경량의 Publish/Subscribe(Pub/Sub) 메시징 프로토콜이다.
- M2M(machine-to-machine)와 IoT(Internet of things)에서의 사용하려고 만들었다.
- IoT를 위해서 낮은 전력, 낮은 대역폭 환경에서도 사용할 수 있도록 설계됐다.
- MQTT는 HTTP, TCP등의 통신과 같이 클라이언트-서버 구조로 이루어지는 것이 아닌, Broker, Publisher, Subscriber 구조로 이루어진다.
- Publisher는 Topic을 발행(publish) 하고, Subscriber는 Topic에 구독(subscribe)합니다. Broker는 이들을 중계하는 역할을 한다.
- 단일 Topic에 여러 Subscriber가 구독할 수 있기 때문에, 1:N 통신 구축에도 매우 유용하다.
- MQTT에서 Topic은 /를 사용해서 구성된다.
- 위와 같이 계층을 구성한다면, IOT 센서와 같은 데이터를 관리하기에 매우 용이하다.
- MQTT는 QoS(Quality of Service)를 제공하는데, 총 3단계로 나뉘어져 있다.
- 0 : 메세지는 한번만 전달되며, 전달이후의 수신과정을 체크하지 않는다.
- 1 : 메세지는 한번 이상 전달되고, 핸드셰이킹 과정을 추적하나, 엄격하게 추적하지 않기 때문에 중복수신의 가능성이 있다.
- 2 : 메세지는 한번만 전달되고, 핸드셰이킹의 모든 과정을 체크한다.
- QoS의 단계가 높아질 수록 통신의 품질은 향상되지만, 그에 따라 성능 저하의 가능성이 있으므로. MQTT의 QoS는 프로젝트의 특성에 따라 결정되어야 한다.
MQTT 브로커
MQTT 프로토콜을 구현하는 브로커들은 아래와 같이 여러 것들이 있습니다.