MQTT란?
MQTT는 Publisher, Broker, Subscriber의 세 가지 분류로 이루어진 프로토콜이다.
Publisher가 Broker 에게 특정 Topic으로 메시지를 보내면, Subscriber는 Broker로부터 받고 싶은 Topic만을 구독하여 메시지를 받는다.
장점
Python, Java 등 많은 언어들이 지원하고 있다.
메시지 헤더가 작고, 리소스를 적게 소모하기 때문에 대역폭이 낮다. 즉 불안정한 네트워크에서도 사용할 수 있다.
페이스북 메신저가 MQTT 프로토콜을 이용한다고 한다.
단점
Publisher와 Subscriber가 모두 온라인 상태여야만 메시지를 구독할 수 있다.
구조와 와일드카드
Topic은 트리 구조로 이루어져 있으며, 와일드카드를 사용할 수 있다.
와일드카드의 종류는 #, + 두 가지이다.
#은 해당 레벨과 하위 레벨의 모든 Topic을 구독한다.
+는 해당 레벨을 확장한다.
예를 들어 product, product/food, product/device/phone 이라는 Topic이 있다고 하자.
이때 product/# 를 구독한다면, 위 세 가지 Topic으로 오는 메시지를 모두 받을 수 있다.
product/user1/food, product/user2/food 라는 Topic이 있을 때,
product/+/food를 구독한다면, 위 두 가지 Topic을 모두 받을 수 있다.
QoS
MQTT는 신뢰성을 보장하기 위해 QoS(Quality of System)이라는 기능을 제공하는데, 0부터 2까지 세 가지 단계가 있다.
0: 메시지를 보내기만 하고 잘 갔는지는 확인하지 않음
1: 메시지를 보낸 후 메시지가 전달되었다는 답장을 받고, 만약 못 받았다면 답장이 올 때까지 계속 보냄
2: 메시지를 확실하게 딱 한 번 보냄. 부하가 클 수 있음
'IT > 기타' 카테고리의 다른 글
[SI 지식 말하기 연습] DB에 대해 (1) | 2024.12.17 |
---|---|
[SI 지식 말하기 연습] 로드밸런싱이란? (0) | 2024.12.17 |
[일상/연말결산 캘린더] 올해 위시리스트 중 갖지 못한 것은? (0) | 2024.12.03 |
[SI 지식 말하기 연습] DB - 인덱스(Index) (0) | 2024.11.24 |
[IT/일상] 엑셀 VBA 페어 매칭 프로그램 후일담 (고도화) (2) | 2024.11.20 |