언제 그리고 왜 MQTT 프로토콜을 사용해야합니까?


34

온도, 습도 및 질량을 측정하는 장치를 개발 중입니다. 현재 HTTPS를 사용하여 데이터를 원격 서버에 업로드합니다. 이제 "사물 인터넷 프로토콜"이라고 주장하는 MQTT 라는 프로토콜이 있다는 것을 알고 있습니다.

어떤 경우에 왜 HTTPS에서 MQTT로 전환해야합니까?

답변:


32

MQTT는 장치 간 "메신저"입니다.

  • 기기는 시간 T에서 X 도의 온도를 측정합니다.
  • 자체 또는 zwave 허브를 통해 MQTT 브로커에 연결합니다.
  • 주제와 메시지를 작성 /domotics/myplace/mydevice/temperature
  • 메시지 내에 X( "페이로드"로)

집안 다른 곳 :

  • Raspberry Pi가 MQTT 브로커에 연결되어 있습니다 (MQTT 인스턴스 자체 일 수 있음).
  • 이 주제 /domotics/+/+/temperature를 구독 하여이 주제 형식을 사용하는 모든 장치에서 모든 온도 정보를 수신합니다. MQTT 주제 와일드 카드 ( 및 ) 에 대한 자세한 정보 는 MQTT 스펙 을 참조하십시오 .+#
  • 페이로드 X와 함께 메시지를 수신하고 원하는 것을 수행합니다!

집안 다른 곳 :

  • 컴퓨터가 MQTT 브로커에 연결되어 있고 주제 /domotics/myplace/mydevice/#를 구독 하여 디바이스에서 모든 정보를 가져 와서 기록합니다.
  • 페이로드 X와 함께 메시지를 수신하고 원하는 것을 수행합니다!

MQTT는 웹 서비스와 소켓을 서버 주변에 두지 않도록하는 데 매우 유용합니다. Node-RED는 MQTT를 사용하며 신호 를 가져 in오고 설정 하도록 Domoticz를 구성 할 수 있습니다 out.

저는 개인적으로 집에서 MQTT를 사용하여 컴퓨터를 끕니다 /house/computers/mycomputer.0


소켓 및 기타 웹 서비스를 신경 쓸 필요가 없다는 것이 좋습니다.
Bence Kaulics

보안 측면에 대해 언급 할 수 있습니까? 트래픽이 일반 텍스트입니까?
Mawg

1
또 다른 대답은 MQTT가 TLS를 지원한다고 말합니다. iot.stackexchange.com/a/69/39
Goufalite

20

MQTT 라고하는 MQ Telemetry Transport Protocol 은 저전력 및 저 대역폭에서 실행되는 장치를 위해 설계되었습니다. 다른 발행물이 특정 주제를 구독 할 수 있음을 의미하는 경량 발행 / 구독 메시징 프로토콜입니다.

HTTP / HTTPS 는 전력 사용량을 신경 쓰지 않고 데이터 오버 헤드가 많은 클라이언트-서버 컴퓨팅을위한 요청-응답 프로토콜로 설계되었습니다.

다음과 같은 경우 MQTT를 사용하십시오.

  • 사용중인 기기가 배터리 셀에서 실행 중이고 x 일마다 교체하려는 것을 원하지 않습니다 (MQTT는 배터리 사용에 최적화되어 있지만 HTTP / S는 그렇지 않습니다)
  • 빠른 응답이 필요합니다
  • 발행 / 구독 메커니즘이 필요함 (많은 클라이언트에게 메시지를 푸시하려는 경우)
  • 서로 다른 수준의 QoS로 데이터를 안정적으로 전송해야 함

MQTT는 HTTPS만큼 보안을 제공합니까?

MQTT는 TCP를 전송 프로토콜로 사용하므로 기본적으로 연결은 암호화 된 통신을 사용하지 않습니다. 전체 MQTT 통신을 암호화하기 위해 HiveMQ와 같은 대부분의 MQTT 브로커는 일반 TCP 대신 TLS를 사용할 수 있습니다.

참조 : HiveMQ


1
MQTT는 HTTPS만큼 보안을 제공합니까?
Bence Kaulics

2
SSL / TLS를 사용할 수 있으므로 HTTPS만큼 안전해야합니다.
가니 마

1
@Ghanima가 말한 것처럼 MQTT 보안에 대한 대화를 확인하기 위해 참조 기사로 답변을 업데이트했습니다.
bravokeyl

11

MQTT (Message Queue Telemetry Transport)는 제안 된 응용 프로그램에 적합합니다.

대역폭 (헤더가 2 바이트에 불과한 가장 작은 패킷 크기) 및 클라이언트 코드 풋 프린트 (일반적인 IoT 클라이언트 인 ESP8266과 같은 씬 클라이언트에서 실행 가능)와 관련하여 가볍습니다. 전송 데이터를 줄이면 센서와 같은 오프 그리드 배터리 구동 클라이언트의 배터리 수명 연장에 도움이됩니다.

MQTT는 또한 예기치 않은 클라이언트 연결 끊기 후에 연결을 복구하는 영구 가입과 같이 IoT 작업에 적합한 간단한 방법 ( 동사 )을 제공합니다 . HTTP / HTTPS와 비교하여 패키지에서 데이터를 추출하는 것이 더 간단합니다 (구문 분석기 필요 없음).


5

여기 에 우리 프로젝트에 사용 된 통신 시스템의 발전과 발전을 보여주는 기사썼습니다 . 마이크로 서비스에 관한 것이지만 모든 종류의 원격 측정 데이터를 수집하고 게시하는 작업을 수행하는 센서는 마이크로 서비스라고 생각할 수 있습니다.

따라서 가장 중요한 결론은 이벤트를 어딘가로 보내야하고 수신자에 대해 아무것도 모르는 경우 MQTT를 사용하는 것이 좋습니다. 받는 사람에 대해 알고 있고 응답이 필요한 경우 (예 : 명령의 경우) HTTP (일반적으로 REST)를 사용하는 것이 훨씬 좋습니다.

트래픽, CPU, 메모리 및 에너지 소비 관점에서 MQTT와 HTTP는 기본적으로 동일합니다.


2

인용과 관련하여 MQTT는 "사물 인터넷 프로토콜"입니다.

예,이 프로토콜을 사용하는 개발자는 많지만 ( IoT Developer Survey 2018 참조) CoAP (UDP를 기반으로 IoT에 맞게 HTTP가 조정 됨)는 간단한 요청 / 응답 기능을 사용하려는 경우 HTTP에 대한 대안을 제공합니다. 너의 어플리케이션.

반면 MQTT 는 내장 된 발행 / 구독 로직을 제공하므로 확장에 유용합니다 (더 많은 장치에 더 많은 게이트웨이를 사용할 수 있음). MQTT-SN (센서 네트워크의 경우 MQTT )이라고하는 UDP 대안 (예 : CoAP to HTTP )도 있습니다. 이것은 CoAP보다 작은 오버 헤드를 제공하지만 R / R을 사용하지는 않습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.