MQTT là gì?

MQTT (Message Queue Telemetry Transport) là một giao thức truyền tin (message) theo mô hình publish – subscribe (xuất bản – đăng ký nhận tin), sử dụng băng thông thấp, độ tin cậy cao và có khả năng hoạt động trong điều kiện đường truyền không ổn định. Do đó MQTT cực kỳ thích hợp cho các hệ thống IoT.

Sau đây ta cũng làm quen với các khái niệm cơ bản trong MQTT.

Publish, subscribe

Mô hình MQTT gồm 2 phần chính là Broker và Client.

Mỗi Client sẽ đăng ký một vài kênh (topic), ví dụ như “house/living-room/temperature“, “house/kitchen/temperature“. Quá trình đăng ký này gọi là subscribe, giống như chúng ta đăng ký nhận tin trên một kênh Youtube vậy. Mỗi Client sẽ nhận được dữ liệu khi bất kỳ Client nào khác gởi dữ liệu đến kênh đã đăng ký. Khi một Client gởi dữ liệu tới kênh đó, gọi là publish.

Broker được coi như trung tâm, nó là điểm giao của tất cả các kết nối đến từ Client. Nhiệm vụ chính của broker là nhận message từ các Client, xếp các message theo hàng đợi rồi chuyển chúng tới một địa chỉ (topic) cụ thể. Nhiệm vụ phụ của broker là nó có thể đảm nhận thêm một vài tính năng liên quan tới quá trình truyền thông như: bảo mật message, lưu trữ message, logs…

Hình minh họa dưới mô tả cách hoạt động của một hệ thống IoT:

QoS

Có 3 tuỳ chọn QoS (Qualities of service) khi publishsubscribe:

  • QoS 0: Đây là mức dịch vụ thấp nhất trong MQTT. Người gởi chỉ gởi tin nhắn một lần duy nhất và không được lưu trữ và truyền lại bởi người gửi. Người nhận không xác nhận đã nhận được tin nhắn.

  • QoS 1: QoS 1 đảm bảo rằng một tin nhắn được gửi ít nhất một lần cho người nhận. Người gửi lưu trữ tin nhắn và có thể gởi nhiều lần cho đến khi nó nhận được phản hồi từ người nhận xác nhận rằng đã nhận được tin nhắn.

  • QoS 2: Đây là mức dịch vụ cao nhất trong MQTT. Mức này đảm bảo rằng mỗi tin nhắn chỉ được nhận đúng một lần bởi người nhận. QoS 2 là mức dịch vụ an toàn và chậm nhất, quá trình này phải trải qua 4 bước bắt tay.

Retain

Nếu RETAIN được set bằng 1, khi tin nhắn được publish từ Client, Broker PHẢI lưu trữ lại gói tin với QoS, và nó sẽ được gởi đến bất kỳ Client nào subscribe cùng kênh trong tương lai. Khi một Client kết nối tới Broker và subscribe, nó sẽ nhận được gói tin cuối cùng có RETAIN = 1 với bất kỳ topic nào mà nó đăng ký trùng. Tuy nhiên, nếu Broker nhận được gói tin mà có QoS = 0 và RETAIN = 1, nó sẽ huỷ tất cả các gói tin có RETAIN = 1 trước đó. Và phải lưu gói tin này lại, nhưng hoàn toàn có thể huỷ bất kỳ lúc nào.

Khi publish một gói dữ liệu đến Client, Broker phải đặt RETAIN = 1 nếu gói được gởi như là kết quả của việc subscribe mới của Client (giống như tin nhắn ACK báo subscribe thành công). RETAIN phải bằng 0 nếu không quan tâm tới kết quả của việc subscribe.

LWT

Do MQTT thường được sử dụng trong điều kiện đường truyền không ổn định, nên cần phải đưa ra những kịch bản để xử lý trong các tình huống bị mất kết nối không đúng lúc. LWT (Last Will and Testament) được sử dụng trong trường hợp này.

Quá trình diễn ra như sau:

  1. Publisher đăng ký với broker một topic để gởi gói tin LWT cho các subscriber trong trường hợp bị ngắt kết nối.
  2. Nếu broker phát hiện một kết nối bị ngắt, nó sẽ gởi gói tin LWT sẽ cho tất cả các subscriber đã đăng ký topic ở trên.

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *

Fill out this field
Fill out this field
Vui lòng nhập địa chỉ email hợp lệ.
You need to agree with the terms to proceed

1 Bình luận.

  • Đây là khóa học IoT với Arduino phần nâng cao, giúp các bạn làm quen với các khái niệm về phần truyền và nhận dữ liệu lên Internet thông qua kết nối WiFi và nhiều phương thức (protocol) khác nhau.

Menu