MQTT là gì?

MQTT (Message Queuing Telemetry Transport) là một giao thức truyền thông đơn giản và nhẹ, được thiết kế để truyền thông dữ liệu giữa các thiết bị IoT (Internet of Things). MQTT được phát triển bởi IBM vào năm 1999 và hiện đã trở thành một trong những giao thức phổ biến nhất trong lĩnh vực IoT.

Các chức năng chính:

  1. Publish/Subscribe: MQTT sử dụng kiểu truyền thông Publish/Subscribe, cho phép các thiết bị gửi và nhận dữ liệu từ nhau một cách độc lập và hiệu quả. Các thiết bị sẽ đăng ký vào các chủ đề (topic) cụ thể và nhận thông tin từ các chủ đề đó.
  2. Nhẹ và tiết kiệm băng thông: MQTT được thiết kế để hoạt động trên các mạng có băng thông thấp và không ổn định. Giao thức này sử dụng một lượng băng thông rất nhỏ, chỉ khoảng vài byte để gửi thông tin.
  3. Đáng tin cậy: MQTT hỗ trợ các tính năng đảm bảo tính đáng tin cậy của dữ liệu, bao gồm xác nhận giao tiếp, đảm bảo dữ liệu không bị mất hoặc trùng lặp và khôi phục lại các kết nối bị gián đoạn.
  4. Tích hợp dễ dàng: MQTT là một giao thức mở, cho phép các nhà sản xuất thiết bị và các nhà phát triển phần mềm tích hợp nó vào các ứng dụng IoT của mình một cách dễ dàng.
  5. Điều khiển định lượng: MQTT cho phép người dùng kiểm soát độ dày của thông điệp được gửi, giúp giảm tải cho các mạng có băng thông thấp.

Cách thức hoạt động:

MQTT (Message Queuing Telemetry Transport) hoạt động trên mô hình Publish/Subscribe (Phát hành/Đăng ký), trong đó các thiết bị gửi và nhận dữ liệu thông qua các chủ đề (topics) cụ thể.

Các thành phần trong MQTT gồm:

  1. Broker: là trung tâm của mạng MQTT, có nhiệm vụ tiếp nhận và phân phối các thông điệp từ các thiết bị và các ứng dụng.
  2. Publisher: là thiết bị hoặc ứng dụng sẽ phát hành (publish) thông điệp lên Broker.
  3. Subscriber: là thiết bị hoặc ứng dụng sẽ đăng ký (subscribe) vào các chủ đề và nhận thông điệp từ Broker.

Các bước hoạt động của MQTT như sau:

  1. Publisher gửi thông điệp tới Broker, thông qua một chủ đề (topic) cụ thể.
  2. Broker tiếp nhận thông điệp từ Publisher, và lưu trữ nó vào một hàng đợi (queue).
  3. Subscriber đăng ký vào các chủ đề tương ứng, và yêu cầu Broker cung cấp các thông điệp liên quan đến chủ đề đó.
  4. Broker sẽ trả lại các thông điệp liên quan đến chủ đề đó cho Subscriber.

Trong giao thức MQTT, QoS (Quality of Service) và Retain là hai tính năng quan trọng giúp đảm bảo tính đáng tin cậy và hiệu quả của thông tin truyền tải giữa các thiết bị.

  1. QoS (Quality of Service): QoS xác định mức độ đảm bảo chất lượng cho việc truyền tải thông điệp giữa Publisher và Subscriber. MQTT hỗ trợ ba mức QoS khác nhau:
  • QoS 0: Thông điệp được gửi đi một lần duy nhất, không đảm bảo tính đáng tin cậy và không có bất kỳ sự xác nhận nào từ Subscriber.
  • QoS 1: Thông điệp được gửi đi ít nhất một lần và nhiều lần nữa nếu cần thiết, đảm bảo tính đáng tin cậy nhưng có thể dẫn đến sự trùng lặp thông điệp.
  • QoS 2: Thông điệp được gửi đi ít nhất một lần và đảm bảo tính đáng tin cậy cao nhất, đảm bảo rằng thông điệp sẽ được gửi một cách chính xác một lần và chỉ một lần.

Mức QoS được lựa chọn phụ thuộc vào độ quan trọng của thông điệp và mức độ đáng tin cậy yêu cầu.

  1. Retain: Retain là tính năng cho phép Subscriber nhận được thông điệp gần nhất được gửi đến cho một chủ đề cụ thể ngay cả khi Subscriber không đăng ký đối tượng này. Thông điệp này được lưu trữ trên Broker và được Subscriber nhận lấy khi đăng ký vào chủ đề. Tính năng Retain rất hữu ích cho việc truyền tải thông điệp quan trọng hoặc cung cấp thông tin đến các Subscriber mới.

( Tham khảo )