Network

MQTT 란?

SambaLim 2019. 4. 26. 23:25
MQTT 란

MQTT

Message Queuing Telemetry Transport

기존 프로토콜에서 다양한 커뮤니케이션의 요구사항을 수용할 수 없어 생겨났습니다.

Publish / Subscribe 방식의 메시지 큐입니다.

 

메시지 큐

웹 서버 상에서 데이터를 처리하다보면 너무 많은 처리로 인하여 대기하는 요청이 쌓입니다. (병목현상이 일어납니다.)

그에 따라 서버의 성능이 저하되거나 심지어 서버가 다운되기도 합니다. 이를 방지하기 위해 기존에 로드밸런싱(부하분산)을 하거나 DB사이드에서 수정을 하기도 합니다.

하지만 기존의 방식들은 비용도 많이들고 쉽지 않습니다. 따라서 원할한 처리를 위해 비동기 메시지 방식을 구성하게 되는데 이를 메시지 큐라 합니다.

Producer(Sender)가 메시지를 Queue안에 넣어두면, 이를 Customer(Receiver)가 가져와 처리하는 방식입니다.

 

Public/Subscribe 방식

기본적으로 Publish/Subscribe의 원칙은 다음과 같습니다.

Publisher는 메시지를 발행하고, Subscriber는 관심있는 주제를 구독한다.

Publisher와 Subscriber는 모두 Broker에 대한 Client입니다. Broker는 메시지 버스를 만들고 메시지 버스에 Topic이란 이름의 다양한 메시지를 흘려보냅니다.

Broker를 MQTT서버라 하지 않고 Broker라고 부르는 이유는 Broker는 Publisher와 Subscriber가 메시지를 주고 받을 수 있는 다리의 열할만 하기 때문입니다.

 

MQTT QoS

MQTT는 신뢰성있는 전송을 위해 다양한 QoS 옵션들을 제공합니다.

  • QoS LEVEL 0 : 한 번 전달하고 전달 여부는 확인하지 않습니다. (메시지 유실의 가능성이 있음)
  • QoS LEVEL 1 : 적어도 한 번이상 전달하고 전달 여부는 확인하지 않습니다. (중복전달의 가능성이 있음)
  • QoS LEVEL 2 : 핸드쉐이킹 과정을 통해 메시지가 정확하게 한번만 전달됩니다.