MQTT 소개1
이 문서는 다음사이트2의 번역임을 밝힌다. 한글 판3도 있음
MQTT(MQ TelemetryTransport) 프로토콜을 사용해서 모바일 앱 간의 메시지를 보내는 것에 대해서 생각해 보자. 이 프로토콜은 무선과 적은 대역폭을 가진 네트워크 상에서 사용할 목적으로 구현 되었다. 모바일 애플리케이션은 이 MQTT 라이브러리를 호출함으로써 메시지를 수신 혹은 전송하는 데 사용 한다.
메시지들은 MQTT 메시징 서버를 통해서 메시지를 교환하게 된다. MQTT 클라이언트와 서버는 모바일 앱을 위해서 안정적으로 메시지를 전송하는 복잡성을 내부에서 조절하고 네트워크 관리 비용을 최소화 할 수 있도록 해준다.
MQTT 애플리케이션은 스마트 폰이나 태블릿 같은 모바일 기기에서 구동한다. MQTT 프로토콜은 또한 센서로부터 데이터를 수신하거나 원격에서 기기를 조작하기 위한 무선 상에 사용할 수 있다. 모바일 기기들과 센서들에 대해서, MQTT 는 데이터의 정확한 전송을 위해서 높은 확장성의 publish/subscribe 프로토콜을 제공하고 있으며, 어떤 애플리케이션에서도 이 MQTT 라이브러리를 이용해서 MQTT 메시지드들을 수신 또는 송신 할 수 있다.
MQTT 클라이언트 라이브러리는 경량 라이브러리이며, 메일박스 같이 행동하며 MQTT 서버에 연결된 다른 MQTT 애플리케이션들과 메시지를 송/수신 할 수 있다. 서버에 연결되어 응답을 기다리기 보다는 메시지를 전송하므로써, MQTT 애플리케이션은 배터리 사용량을 줄일 수 있다. 이 라이브러리는 MQTT 버전 3 프로토콜 상에서 구동하는 MQTT 서버를 통해서 다른 기기로 메시지를 전송한다. 따라서 특정한 클라이언트로 메시지들을 전송한다건, publish/subscribe 메커니즘을 통해서 다른 많을 기기들로 메시지를 연결 할 수 있다.
MQTT 클라이언트 라이브러리는 모바일 기기와 센서 애플리케이션에 연결하기 위한 MQTT 프로토콜을 사용한 MQTT 서버를 사용한다.
IBM®MessageSight and WebSphere® MQ are MQTT servers.They can connect large volumes of MQTT client applications, and theycan connectMQTT and WebSphere MQ networks together.See Getting startedwith MQTT servers. WebSphere MQ and IBMMessageSight can both form a bridge between external web applications thatare running on mobile devices and sensors, and other types of publish/subscribeand messaging applications that are running within the enterprise. The bridge makesit easier to build smart solutions that incorporate mobile devicesand sensors.
위 번역 생략…
모바일과 센서 기기들에서 구동되는 인터넷에 연결된 애플리케이션에서 건강 정보를 가공하는 스마트 솔루션들이 그 일례가 될 것이다. 이런 무선 통신 기반의 스마트 애플리케이션의 사용에 대한 두 가지 예를 들어 보자면 스마트 전력과 스마트 건강 정보 서비스가 그것일 것이다.
- 서비스 프로바이더로 에너지 사용 데이터를 포함한 MQTT 메시지가 보내 진다.
- 에너지 사용 데이터 분석을 기반으로 제어 명령이 무선 애플리케이션으로부터 전송.
- 더 정확한 정보는 다음을 참고 하자.
Telemetry scenario:Home energy monitoring and control.
- 무선 애플리케이션이 당신의 건강정보를 병원과 의사에게 전송한다.
- MQTT 메시지 경고나 피드백이 당신의 건강데이터 분석을 바탕으로 보내진다.
- 좀 더 자세한 정보는 다음을 참고.
Telemetry scenario:Home patient monitoring.
MQTT 프로토콜을 사용해서 자신만의 앱을 만들어 소형 기기로 MQTT를 빌드하고자 한다면, IBM에서 여러 가지를 제공한다고 한다
- 아래 번역 생략
The Cand Java libraries run on iOS, Android, Windows, and anumber of UNIX and Linux platforms. You can port the C source codefor the MQTTclient library to other platforms. The MQTT clientlibraries for C and Java are available with an open source licensefrom the Eclipse Paho project. SeeEclipse Paho.
The MQTT protocol specificationis open, and available from MQTT.org.
MQTT 프로토콜
MQTT 프로토콜은 클라이언트가 소형이라는 생각하게 경량화 된 프로토콜이며, 네트워크 대역폭을 효율적으로 사용하도록 작성되었다. MQTT 프로토콜은 전송보장 및 파이어 앤 포겟 전송을 지원한다. 프로토콜 에서 메시지 전달은 애플리케이션과 분리되어진다. 애플리케이션 에서 이 분리 확장은 구현된 MQTT 서버와 클라이언트 사이의 방식에 의존성을 가진다. 어떤 서버와 연결되었는 지에 대한 부분에서 애플리케이션이 자유로워지며, 메시지를 기다릴 수 있도록 하는 것이 이 분리 전송 방식이다. 이 상호교환 모델은 이메일 시스템과 비슷하지만 애플리케이션 프로그래밍에 더 최적화 되어 있다.
MQTT V3.1 프로토콜이 공포되어있으며, MQTT V3.1 ProtocolSpecification 에서 확인 할 수 있다. 이 표준은 프로토콜만의 몇 몇 특화된 특징에 대해서 언급하고 있다:
- publish/subscribe 방식의 프로토콜이다.
- 무엇보다 일 대 다 메시지 분산을 지원하면서, publish/subscribe 방식으로 애플리케이션들을 분리한다. 이 두가지 특징 모두 다수의 클라이언트를 가지는 애플리케이션에는 유용하게 사용된다.
- 메시지 내용과 어떤 부분에서도 의존성을 가지지 않는다.
- 기본 네트워크 연결성을 제공하는 TCP/IP 프로토콜 상에서 구동된다.
- 메시지 전송에 대해서 세가지 고급 서비스가 존재한다:
At most once 최대 한번
메시지들 Internet Protocol 네트워크 내에서 최상의 노력으로 전송되어 지지만, 메시지 분실은 있을 수 있다.예를들어 주변의 센서 데이터에 통신은 이 고급 서비스를 사용한다면, 만약 각 읽어들인 메시지가 유실되거나, 그다음 바로 다음 메시지가 publishing 되더라도 이 경우에는 아무 문제가 되지 않는다.
At least once 적어도 한번
메시지들의 수신은 완벽히 보장되나, 복수의 메시지가 수신될 수 있다.
Exactly once 정확히 한번
메시지들은 정확히 한번 수신 됨을 확신한다.
예를 들어, 청구 시스템이 에 서비스 품질을 사용한다면
복수 혹은 메시지 유실에 대해서 불편함을 겪을 수 있거나, 이 오류로 인해 부정확한 청구를 할 수 있는 가능성이 있다.
- 네트워크상의 메시지 흐름에 대한 제어 방식에 더 유용하다. 예를 들어 고정 길이 헤더는 단지 2 바이트 long 이며 프로토콜 교환은 네트워크 트래픽을 줄이기 위해서 최소화 된다.
- MQTT 서버로부터 클라이언트가 비정상적으로 끊어진 subscriber들에게 통지 할 수 있도록 유언장(Last Will and Testament )을 가진다. 정확한 내용은 Last will andtestament publication 을 참고하자.
MQTT version3.1 은 IBM Websphere MQ와 IBM MessageSight를 지원한다.
MQTT는 TCP/IP위에서 구현되었다. 다른버전의 프로토콜 즉 TCP/IP가 아닌 프로토콜 위에서 사용가능한 MQTT-S 프로토콜 버전이 있다. 자세한 내용은 다음을 참고한다.
MQTT-S version 1.2 specification.
MQTT 커뮤니티
IBM isrunning developerWorks® Messaging community for MQTT developers that are writing applicationsfor IBM MessageSight and WebSphere MQ.
MQTT.org is a good place to go to learn about and discuss implementations andextensions to the MQTT protocol.
Eclipse TechnologyProject 하의 MQTT는 오픈소스 이클립스 프로젝트이다. Paho community는 오픈소스 클라이언트 서버를 개발하고 있다.
다음 Eclipse Paho 를 보라.
이상.
1. http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mm.tc.doc/tc10100_.htm?lang=en
2. http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mm.tc.doc/tc10100_.htm?lang=en
3. http://www-01.ibm.com/support/knowledgecenter/SSFKSJ_7.5.0/com.ibm.mm.tc.doc/tc10100_.htm?lang=en
'이것저것' 카테고리의 다른 글
내가 생각하는 IoT 기술의 구현이란 (1) | 2023.03.01 |
---|---|
IoT를 위한 고 가용성 MQTT 클러스터 구축하기 (0) | 2023.02.28 |
IIS 모니터링 도구로 메트릭 수집하기 (0) | 2023.02.26 |
nodejs 설치 및 grunt 설정 (0) | 2023.02.23 |
Gray scale 및 RGB 색상 공간 (0) | 2023.02.18 |