MQTT 메시지 대기열 원격 측정 전송 프로토콜
1. MQTT란?
MQTT(MessageQueueing Telemetry Transport Protocol)의 정식 명칭은 Message Queuing Telemetry Transport Protocol의 약자로 에서 출시된 경량 기반 프로토콜입니다. IBM 에이전트의 발행/구독 모델 메시지 전송 프로토콜은 TCP 프로토콜 스택에서 실행되어 질서 있고 안정적인 양방향 네트워크 연결을 보장합니다. 개방형이고 간단하며 구현이 쉽기 때문에 리소스가 제한된 환경에 적용할 수 있으며 M2M 및 IoT 애플리케이션에 적합한 선택입니다.
2. MQTT를 사용하는 이유는 무엇인가요?
MQTT 프로토콜은 다음과 같은 상황을 위해 설계되었습니다.
M2M(Machine to Machine) 통신, 센서 간 데이터 통신 등 기계 간 엔드투엔드 통신이 가능하기 때문입니다. 기계 대 기계(Machine to Machine) 고려 사항: 온도 센서와 같은 기계 또는 장치는 하드웨어 성능이 매우 약합니다. 프로토콜은 컴퓨팅 성능 및 저장 공간과 같은 리소스 소비를 최소화하는 것을 고려해야 하며 네트워크가 불안정합니다. , 대역폭은 상대적으로 작습니다.
MQTT의 기능:
게시/구독 메시지 모델은 일대다 메시지 게시 및 애플리케이션 분리를 제공합니다. 이는 1과 매우 유사합니다. 여기에 목록 텍스트 XMPP가 있지만 MQTT의 정보 중복성은 XMPP보다 훨씬 작습니다.
페이로드 콘텐츠를 보호하는 메시지 전송입니다.
TCP/IP를 사용하여 네트워크 연결을 제공합니다. 주류 MQTT는 데이터 푸시를 위한 TCP 연결을 기반으로 하지만 MQTT-SN이라는 UDP 기반 버전도 있습니다. 이 두 버전은 서로 다른 연결 방식을 기반으로 하기 때문에 당연히 서로 다른 장점과 단점이 있습니다.
세 가지 메시지 전송 방법 QoS:
0은 "최대 한 번"을 나타내며 메시지 게시는 기본 TCP/IP 네트워크에 전적으로 의존합니다. 메시지 손실 또는 중복이 발생할 수 있습니다. 이 수준은 환경 센서 데이터의 경우 두 번째 기록이 곧 전송되므로 읽은 기록이 손실되더라도 문제가 되지 않는 상황에서 사용할 수 있습니다.
1은 "최소 한 번"을 나타내며 메시지가 도착했음을 보장하지만 메시지 중복이 발생할 수 있습니다.
2는 "한 번만"을 의미하며 메시지가 한 번만 도착함을 보장합니다. 이 수준은 메시지 중복이나 손실로 인해 청구 시스템에서 잘못된 결과가 발생할 수 있는 상황에서 사용할 수 있습니다. 참고: 서버는 Mosca를 사용하여 구현되므로 Mosca는 현재 QoS 1만 지원합니다.
특정 주제의 모든 온라인 장치에 메시지를 보내는 등 임시 메시지를 보내는 경우에는 문제가 되지 않습니다. 손실, 0이 그것입니다(클라이언트는 로그인 시 지원되는 QoS 수준을 지정해야 하며, 메시지를 보낼 때 메시지가 지원하는 QoS 수준도 지정해야 합니다). 클라이언트가 메시지를 받을 수 있는지 확인해야 하는 경우 QoS를 1로 지정해야 합니다. 동시에 필요한 경우 클라이언트가 온라인이 아니더라도 메시지를 받을 수 있으려면 클라이언트가 로그인 시 세션의 유효성을 지정해야 합니다. 오프라인 메시지를 받으려면 다음이 필요합니다. 서버가 클라이언트의 세션 상태를 유지해야 함을 지정합니다.
mqtt는 구독자 모델 아키텍처를 기반으로 합니다. 클라이언트가 서로 통신하는 경우 동일한 구독 주제에 속해야 합니다. 즉, 클라이언트가 모두 동일한 주제를 구독해야 합니다. 직접 소통하기. 구독 모델의 확실한 이점은 그룹 메시지를 보내는 경우 이를 주제에 게시하기만 하면 되며 이 주제를 구독하는 모든 클라이언트가 메시지를 받을 수 있다는 것입니다.
메시지 보내기는 주제에 전송되어야 합니다. 중요한 점은 클라이언트가 주제를 구독하는지 여부에 관계없이 메시지가 주제에 전송될 수 있다는 것입니다. 주제를 선택하면 메시지가 자동으로 전송됩니다.
오버헤드가 거의 없는 소규모 전송(고정 길이 헤더는 2바이트) 및 프로토콜 전환을 최소화하여 네트워크 트래픽을 줄입니다.
서두에서 "사물인터넷 분야, 센서와 서버 간 통신, 정보 수집 분야"에 매우 적합하다고 말한 이유다. 약하므로 이 프로토콜을 사용하여 메시지를 전송하는 것이 더 적합합니다.
최종 유언장 및 유언장 기능을 사용하여 클라이언트의 비정상적인 중단을 관련 당사자에게 알리는 메커니즘입니다. 마지막 유언장: 마지막 단어 메커니즘은 동일한 주제에 속한 다른 장치에 마지막 단어를 보내는 장치의 연결이 끊어졌음을 알리는 데 사용됩니다. 유언: 마지막 의지와 기능이 유사한 의지 메커니즘.