
Thời đại IoT đặt ra yêu cầu phải có giao thức kết nối mới nhằm đảm bảo hỗ trợ đầy đủ các thiết bị vật lý thực tế. Để giải quyết vấn đề này, MQTT ra đời và dần trở nên phổ biến. Trong bài viết dưới đây, hãy cùng Bizfly Cloud tìm hiểu cụ thể MQTT là gì và một số vấn đề liên quan đến giao thức này nhé!
Table of Contents
MQTT là gì?
MQTT là một giao thức truyền thông điệp theo mô hình Cung cấp/Thuê bao (Publish/Subscribe). Giao thức này được sử dụng cho các thiết bị IoT với băng thông thấp, khả năng sử dụng được trong mạng lưới không ổn định và độ tin cậy cao. MQTT dựa trên một máy chủ môi giới (Broker) khá ít xử lý và được thiết kế có tính mở, đơn giản, dễ cài đặt và không đặc trưng cho ứng dụng cụ thể nào.
MQTT là lựa chọn phù hợp trong các môi trường như:
- Chi phí mạng viễn thông đắt đỏ/ băng thông thấp, thiếu tin cậy.
- Thiết bị nhúng bị giới hạn về bộ nhớ và tốc độ tài nguyên.
- Các ứng dụng M2M (Machine to Machine) do giao thức MQTT sử dụng băng thông thấp trong môi trường có độ trễ cao.
- Facebook Messenger để truyền thông điệp.

MQTT là một giao thức truyền thông điệp theo mô hình Cung cấp/Thuê bao
Lịch sử hình thành của MQTT
MQTT được phát triển bởi Andy Stanford – Clark và Arlen Nipper vào cuối năm 1999. Nhiệm vụ của họ là tạo ra một giao thức sao cho sự hao phí băng thông và năng lượng là thấp nhất. Từ đó kết nối đến đường ống dẫn dầu thông qua sự kết nối giữa các vệ tinh.
Đến năm 2011, Eurotech và IBM đã trao lại MQTT cho Paho- một dự án của Eclipse. Năm 2013, MQTT được trình lên Organization for the Advancement of Structured Information Standards (OASIS). MQTT được chuẩn hoá và dần trở thành một trong những giao thức được sử dụng phổ biến nhất hiện nay.
Tính năng nổi bật MQTT
MQTT có một số tính năng, đặc điểm nổi bật như:
– Cung cấp khả năng truyền tin phân tán một chiều, ly thân với phần ứng dụng nhờ dạng truyền thông điệp theo mô hình Pub/Sub.
– Truyền thông điệp ngay lập tức mà không quan tâm tới nội dung được truyền đi.
– Sử dụng giao thức nền là TCP/IP.
– Tồn tại ba mức độ tin cậy cho việc truyền dữ liệu lần lượt là:
- QoS 0: Ở mức độ này, Broker/Client sẽ gửi dữ liệu đúng một lần, quá trình gửi được xác nhận duy nhất bởi giao thức TCP/IP.
- QoS 1: Broker/Client sẽ gửi dữ liệu với ít nhất một lần xác nhận từ phía bên kia (tức là có thể nhiều hơn một lần xác nhận rằng đã nhận được dữ liệu).
- QoS 2: Broker/Client đảm bảo khi gửi dữ liệu thì phía nhận chỉ nhận được duy nhất một lần và quá trình này phải trải qua đủ 4 bước bắt tay.
– Để giảm tải cho đường truyền, phần bao bọc dữ liệu truyền nhỏ và được giảm tải đến mức tối đa.

MQTT truyền thông điệp ngay lập tức mà không quan tâm tới nội dung được truyền đi
Thành phần của MQTT
Thành phần chính của một giao thức MQTT là Client (Publisher/Subscriber), Server (Broker), Sessions, Subscriptions và Topics. Trong đó:
- MQTT Client sẽ subcribe từ một hay nhiều topics với mục đích gửi và nhận thông điệp từ các topic tương ứng.
- MQTT Server: Broker sẽ nhận các thông tin subcribe từ Client hay các thông điệp và dựa vào Subscriptions từ Client để chuyển chúng đến các subscriber tương ứng.
- Topic là một hàng đợi các thông điệp và có sẵn khuôn mẫu dành cho Subscriber hoặc Publisher, cho phép Client trao đổi thông tin với các ngữ nghĩa đã được định nghĩa sẵn. Một ví dụ đơn giản mà bạn có thể thấy rõ về Topic của MQTT là dữ liệu cảm biến nhiệt độ của tòa nhà.
- Session được định nghĩa là một kết nối từ Client tới Server, toàn bộ giao tiếp của Client với Server đều là một phần của Session.
- Subscription là kết nối từ Client tới Topic, Client có thể nhận hoặc gửi thông điệp với Topic đó.
Cách thức hoạt động của MQTT
Trước hết, ta cần hiểu được các tính chất và những đặc điểm riêng trong cơ chế hoạt động của MQTT:
– Về tính chất:
- Space Decoupling là không gian ly thân
- Time Decoupling là thời gian ly thân
- Synchronization Decoupling là sự đồng bộ riêng rẽ.
– Về đặc điểm riêng:
- MQTT Subject-based: MQTT sử dụng cơ chế lọc thông điệp dựa vào tiêu đề.
- MQTT Quality of Services-QoS: Đây được gọi là tầng chất lượng dịch vụ, hỗ trợ nhận biết các message có được truyền thành công hay không một cách dễ dàng.
Về cơ chế hoạt động, MQTT hoạt động theo cơ chế Client/ Server nơi mà mỗi cảm biến là một Client và được kết nối tới máy chủ. Nó có thể như một máy chủ môi giới và thông qua giao thức TCP (Transmission Control Protocol). Broker chịu trách nhiệm điều phối toàn bộ thông điệp giữa phía gửi đến đúng phía nhận.
MQTT là một giao thức định hướng bản tin mà trong đó, mỗi bản tin mà một đoạn rời rạc của tín hiệu và broker không thể nhìn thấy. Các bản tin được publish một địa chỉ tương ứng và có thể hiểu như một kênh (topic). Client đăng ký vào một hoặc nhiều kênh để nhận và gửi dữ liệu. Mỗi Client sẽ nhận được dữ liệu khi bất kỳ trạm nào khác gửi dữ liệu vào kênh đã đăng ký (bản tin được gửi tới một kênh nào đó gọi là publish).

MQTT hoạt động theo cơ chế Client/ Server nơi mà mỗi cảm biến là một Client
Các ứng dụng mà MQTT mang lại
MQTT đã được ứng dụng trong các dự án thực tế, cụ thể:
- Facebook Messenger cho phép trò chuyện trực tuyến với nhiều khía cạnh được sử dụng.
- Amazon IoT dựa trên MQTT đã được Amazon Web Services công bố vào năm 2015.
- Các tổ chức không gian địa lý Sensor Things API đã công bố đặc điểm kỹ thuật tiêu chuẩn có một phần mở rộng MQTT. Các tiêu chuẩn lúc này như một giao thức thông báo các bổ sung ràng buộc và được chứng minh trong một thí điểm IoT của Bộ An ninh Nội địa Mỹ.
- Cloud Service cho thí nghiệm IoT hay còn được gọi là Adafruit IO, hoàn toàn miễn phí và được Adafruit đưa ra vào năm 2015.
- MQTT được Microsoft Azure IoT Hub sử dụng làm giao thức chính cho các tin nhắn từ xa.
- XIM, Inc ra mắt ứng dụng khách MQTT Buddy vào năm 2017 dành cho Android và iOS. Người dùng có thể tùy chọn ngôn ngữ có sẵn là Anh, Nga, Trung Quốc.
- Node-RED hỗ trợ các nút MQTT từ phiên bản 0.14 với nhiệm vụ phát minh để định dạng cấu hình đúng các kết nối TLS.
Như vậy, bài viết đã giới thiệu cho bạn MQTT là gì, cách thức hoạt động cũng như các ứng dụng của nó trong thực tế. MQTT đã thực sự trở thành giao thức phổ biến kể từ khi M2M ra đời và thời đại IoT phát triển. Nếu bạn đang tìm kiếm một giao thức gọn nhẹ được thiết kế nhằm kết nối các thiết bị bị hạn chế nguồn trên các mạng băng thông thấp, MQTT sẽ là sự lựa chọn hàng đầu dành cho bạn.