fbpx

Интернэтэд холбогдсон төхөөрөмжүүд (IoT) олширч байгаа өнөө үед төхөөрөмжүүд хоорондоо хурдан, найдвартай, бага нөөц ашиглан харилцах шаардлага бий болсон. Энэ асуудлыг шийдэх хамгийн өргөн хэрэглэгддэг протокол бол MQTT бөгөөд түүний төв хэсэг нь MQTT Broker юм.

Энэ нийтлэлээр бид MQTT талаар танилцсан бол энэ нийтлэлээрээ MQTT Broker гэж юу болох, хэрхэн ажилладаг, ямар төрлүүд байдаг, security болон production орчинд хэрхэн ашиглагддаг талаар тайлбарлах болно.

MQTT Broker гэж юу вэ?

MQTT Broker бол MQTT системийн төв сервер юм.
Түүний үндсэн үүрэг:

  • Client-уудыг холбох
  • Topic-уудыг удирдах
  • Publish хийсэн мессежийг Subscribe хийсэн client-ууд руу дамжуулах
  • Authentication & Authorization хийх
  • QoS удирдах
  • Retained message хадгалах
  • Last Will мессеж илгээх

MQTT-д client-ууд хоорондоо шууд холбогдохгүй. Бүх харилцаа broker-оор дамжина.

MQTT архитектур

MQTT нь Publish/Subscribe загвартай.
Жишээ: ESP32 температур хэмжинэ → Broker руу publish хийнэ → Mobile app subscribe хийсэн тул мессежийг авна.

Sensor → PUBLISH → Broker → SUBSCRIBE → Mobile App

Broker бол зуучлагч.

MQTT хэрхэн ажилладаг вэ?

  1. Client broker-т CONNECT хийнэ
  2. Topic дээр SUBSCRIBE хийнэ
  3. Нөгөө client PUBLISH хийнэ
  4. Broker мессежийг тохирох subscriber руу дамжуулна

Broker бүх мессежийг удирддаг.

MQTT-ийн үндсэн ойлголтууд

1. Topic

Topic бол мессежийн зам.
Жишээ:

  • home/livingroom/temp
  • factory/machine1/status
  • parking/slot/12

Topic нь string бөгөөд hierarchical бүтэцтэй.

2. QoS (Quality of Service)

MQTT 3 төрлийн QoS-тэй:

  • QoS 0 — At most once
    QoS 0 нь “хамгийн ихдээ нэг удаа” хүргэнэ гэсэн утгатай. Энэ түвшинд publisher мессежийг илгээснээр процесс дуусна, ямар нэгэн баталгаажуулалт (ACK) хийгдэхгүй. Хэрэв сүлжээнд алдагдвал дахин илгээхгүй. Тиймээс хурд хамгийн өндөр, нөөц бага ашигладаг боловч мессеж алдагдах магадлалтай. Ихэвчлэн температур, чийгшил зэрэг байнга шинэчлэгддэг sensor мэдээлэлд ашигладаг.
  • QoS 1 — At least once
    QoS 1 нь “ядаж нэг удаа заавал хүргэнэ” гэсэн баталгаатай. Publisher мессеж илгээсний дараа broker хүлээж авснаа баталгаажуулж (PUBACK) хариу өгнө. Хэрэв энэ баталгаажуулалт ирэхгүй бол publisher мессежийг дахин илгээнэ. Иймээс мессеж алдагдахгүй ч зарим тохиолдолд давхар очиж болно. Төлөвийн өөрчлөлт, анхааруулга, хаалга нээгдсэн зэрэг чухал мэдээлэлд ихэвчлэн QoS 1 ашигладаг.
  • QoS 2 — Exactly once
    QoS 2 нь “яг нэг удаа” хүргэнэ гэсэн хамгийн өндөр баталгаатай түвшин юм. Энэ нь дөрвөн шаттай баталгаажуулах процессоор ажилладаг тул мессеж алдагдахгүй, давхардахгүй. Гэхдээ хурд хамгийн удаан, сүлжээ болон серверийн нөөц илүү их ашигладаг. Санхүүгийн гүйлгээ, маш чухал удирдлагын команд зэрэг алдаа гарч болохгүй нөхцөлд хэрэглэнэ.

IoT-д ихэнхдээ QoS 0 эсвэл 1 ашигладаг.

3. Retained Message

Broker хамгийн сүүлийн мессежийг хадгалж болно.
Шинэ subscriber холбогдоход шууд хамгийн сүүлийн утгыг авна.

4. Last Will & Testament (LWT)

Client гэнэт салбал broker автоматаар тодорхой мессеж илгээж чадна. Жишээ:

device1/status = offline

MQTT Broker-ийн төрөл

1. Open Source Broker

Mosquitto

  • Хөнгөн
  • Суулгахад амар
  • Embedded системд тохиромжтой

EMQX

  • Өндөр гүйцэтгэл
  • Cluster support
  • Web dashboard-той
  • Enterprise түвшинд ашигладаг

HiveMQ

  • Enterprise broker
  • Cloud болон on-premise
  • Java дээр суурилсан

VerneMQ

  • High scalability
  • Cluster дэмждэг

2. Cloud Broker

Cloud үйлчилгээ үзүүлэгчдийн broker:

  • AWS IoT Core
  • Azure IoT Hub
  • Google Cloud IoT
  • EMQX Cloud
  • HiveMQ Cloud

Cloud broker-ийн давуу тал:

  • Auto scaling
  • SSL/TLS бэлэн
  • Infrastructure удирдах шаардлагагүй
  • High availability

3. Embedded Broker

Жижиг сервер, edge device дээр ажиллуулна. Жишээ:

  • Raspberry Pi дээр Mosquitto
  • Edge Gateway дээр EMQX

Authentication

  • Username/password
  • Token
  • Certificate
  • JWT

Authorization

Topic түвшинд access control.
Жишээ: User A → зөвхөн home/userA/#

TLS/SSL

MQTT secure холболт:

  • Port 8883
  • mqtts://

MQTT порт

1883 — Plain MQTT
8883 — MQTT over TLS
9001 — WebSocket
8083 — Secure WebSocket

Broker Clustering

Cluster гэдэг нь олон broker-ийг холбож:

  • Load balancing хийх
  • High availability бий болгох
  • Failover хийх

EMQX, HiveMQ, VerneMQ cluster дэмждэг. Mosquitto default-аар cluster биш.

Performance

Сайн broker:

  • Сая гаруй connection
  • Секундэд сая сая мессеж
  • Low latency

EMQX → өндөр гүйцэтгэл
Mosquitto → жижиг системд тохиромжтой.

MQTT vs HTTP

MQTTHTTP
Push-basedRequest-response
Persistent connectionStateless
LightweightHeavy
Real-timePolling шаардлагатай

IoT, real-time системд MQTT илүү тохиромжтой.

Broker суулгах жишээ (Ubuntu)

sudo apt install mosquitto
sudo systemctl start mosquitto

Test:
mosquitto_sub -t test
mosquitto_pub -t test -m “hello”

Дүгнэлт

MQTT Broker бол IoT системийн зүрх юм. Тэр:

  • Төхөөрөмжүүдийг холбодог
  • Мессеж дамжуулдаг
  • Security хангадаг
  • Scaling боломж олгодог
  • Real-time харилцааг дэмждэг

IoT, smart system, real-time monitoring системүүдэд MQTT broker нь хамгийн чухал бүрэлдэхүүн хэсэг болдог.

Leave a Reply