MQTT đang là một giao thức được ứng dụng phổ biến trong thời đại IoT giúp kết nối cho việc truyền tải dữ liệu. Vậy bạn đã biết MQTT là gì chưa? Ưu – nhược điểm và cơ chế hoạt động của giao thức này như thế nào? Nếu chưa, AI.Tech sẽ giúp bạn giải đáp chi tiết tất tần tật từ A – Z về giao thức này qua bài viết dưới đây. Cùng theo dõi nhé!
Tìm hiểu tổng quan về MQTT
MQTT đang ngày càng khẳng định vị thế là giao thức được ưa chuộng hàng đầu trong cộng đồng người dùng, đặc biệt trong lĩnh vực IoT. Vậy giao thức MQTT là gì? Câu trả lời sẽ có ngay sau đây.
Khái niệm MQTT là gì?
MQTT là gì? MQTT (hay Message Queueing Telemetry Transport) là một giao thức nhắn tin tiêu chuẩn (truyền thông điệp) OASIS cho Internet of Things (IoT), sử dụng băng thông thấp, độ tin cậy cao và có thể hoạt động được trong điều kiện kết nối đường truyền không ổn định.
Lịch sử hình thành
Giao thức MQTT được phát minh bởi hai kỹ sư tài năng – Andy Stanford-Clark và Arlen Nipper và chính thức công bố ra đời vào cuối những năm 1990 với mục tiêu là kết nối các thiết bị giám sát trong ngành dầu khí với hệ thống máy chủ giám sát từ xa.
Ban đầu, giao thức này có tên là Giao thức truyền thông điệp từ xa xếp hàng đợi, được hỗ trợ bởi Dòng sản phẩm MQ của IBM trong giai đoạn đầu. Đến năm 2010, IBM công bố MQTT 3.1 như một giao thức mở và miễn phí cho phép mọi người có thể triển khai.
Năm 2013, giao thức được chuyển giao cho Tổ chức vì sự tiến bộ của các tiêu chuẩn thông tin có cấu trúc (OASIS) để duy trì. Chính thức đến ngày 28 tháng 10 năm 2015 MQTT mới được công nhận thuộc tiêu chuẩn OASIS.
Vào cuối tháng 1 năm 2016, giao thức này đạt được sự chấp thuận từ Tổ chức Tiêu chuẩn hóa Quốc tế (ISO), khẳng định vị thế của nó như một tiêu chuẩn quốc tế.
Hiện nay, MQTT không còn được coi là từ viết tắt mà đã trở thành tên chính thức của giao thức này.
Tính năng nổi bật
Dưới đây là các tính năng nổi bật của giao thức MQTT:
- MQTT sử dụng mô hình Pub/Sub để truyền tin một chiều và phân tán, tách biệt khỏi ứng dụng chính.
- Truyền thông điệp diễn ra tức thì, không phụ thuộc vào nội dung.
- Giao thức nền tảng trên TCP/IP.
- Ba cấp độ Chất lượng Dịch vụ (QoS) được áp dụng bao gồm:
+ QoS 0: Gửi một lần, xác nhận qua TCP/IP.
+ QoS 1: Gửi ít nhất một lần, có thể nhận nhiều xác nhận.
+ QoS 2: Đảm bảo nhận chính xác một lần thông qua quy trình 4 bước.
- Dữ liệu được đóng gói tối giản để tối ưu hóa băng thông.
Ưu và nhược điểm của giao thức MQTT
MQTT với những tính vượt trội, đã nhanh chóng trở thành một trong những giao thức truyền thông được ưa chuộng nhất hiện nay. Tuy nhiên, cũng giống như mọi công nghệ khác, MQTT cũng có những ưu điểm và mặt hạn chế riêng.
Ưu điểm của MQTT
- Giúp truyền đạt thông tin nhanh chóng hiệu quả hơn.
- Giảm thiểu đáng kể tiêu thụ băng thông mạng.
- Rất thích hợp cho điều khiển và do thám.
- Tối đa hóa băng thông có sẵn.
- Chi phí vận hành tương đối thấp.
- Độ bảo mật và an toàn cao.
- Tiết kiệm thời gian phát triển.
- Giúp thu thập nhiều dữ liệu hơn và tốn ít băng thông hơn so với những giao thức cũ trước đó.
Nhược điểm của MQTT
Bên cạnh những ưu điểm nổi bật, song MQTT vẫn còn tồn tại một số nhược điểm sau:
- So với CoAP, MQTT có tốc độ truyền dữ liệu chậm hơn.
- Trong khi CoAP sử dụng hệ thống tài nguyên ổn định – tĩnh, MQTT lại hoạt động dựa trên cơ chế đăng ký động (subscribe).
- MQTT không có cơ chế mã hóa tích hợp để bảo mật, thay vào đó, nó sử dụng các giao thức như TLS/SSL để đảm bảo an toàn cho dữ liệu.
- Khả năng mở rộng của MQTT trên quy mô lớn còn hạn chế.
Các thành phần của giao thức MQTT là gì?
Giao thức MQTT hoạt động trên nền tảng TCP/IP dựa theo mô hình publish/subscribe (tạm hiểu: xuất bản/đăng ký) với các thành phần sau đây:
MQTT Broker (Máy chủ môi giới)
MQTT Broker hay máy chủ môi giới đóng vai trò trung tâm điều phối trong một hệ thống MQTT. Đây là điểm giao tiếp chính giữa các thiết bị (client) Publisher/Subscriber.
Chức năng cốt lõi của Broker là nhận message (thông điệp) từ nơi gửi thông điệp (Publisher), sau đó xếp vào danh sách đợi và chuyển đến một địa điểm cụ thể nào đó (Subscriber).
Ngoài ra, Broker còn có thể đảm nhận thêm một số tính năng khác liên quan đến quá trình truyền thông như: logs, lưu trữ thông điệp, bảo mật thông điệp,…
MQTT Client
Đây là thành phần được nối kết với MQTT Broker để truyền và nhận dữ liệu (message).
Client chỉ thực hiện ít nhất một trong hai công việc đó chính là đăng tải (publish) thông điệp lên một hoặc nhiều chủ đề (topic) cụ thể, hoặc là đăng ký (subscribe) một hoặc nhiều chủ đề để tiếp nhận thông điệp từ các chủ đề đó.
Hiện tại, có hai loại client chính chính đó là publisher – gửi dữ liệu và client subscriber – đăng ký nhận dữ liệu.
Topic
Topic có thể được xem như một kênh truyền thông ảo kết nối giữa publisher và subscriber. Khi một thông điệp được đăng tải (publish) vào một topic, tất cả các subscriber đã đăng ký topic đó sẽ đồng thời nhận được thông điệp này.
Session
Hiểu đơn giản, Session trong MQTT là một phiên làm việc giữa một client (thiết bị hoặc ứng dụng) và MQTT Broker. Nó đại diện cho một kết nối duy trì giữa hai bên trong một khoảng thời gian nhất định.
Subscription
Khác với session, subscription là một kết nối logic giữa client và topic. Sau khi đăng ký (subscribe) một topic, client có khả năng trao đổi thông điệp với topic đó, bao gồm cả việc nhận và gửi dữ liệu.
Nguyên tắc – cơ chế hoạt động của MQTT
Cơ chế hoạt động của MQTT là gì? MQTT hoạt động theo nguyên tắc publish/subscribe, mỗi phiên sẽ trải qua 4 giai đoạn chính bao gồm: kết nối, xác thực, giao tiếp và cuối cùng là kết thúc.
- Bước đầu tiên, Client (máy khách) thiết lập kết nối TCP/IP với broker thông qua cổng tiêu chuẩn hoặc cổng tùy chỉnh do nhà phát triển broker quy định.
- Tiếp theo, cổng tiêu chuẩn 1883 được sử dụng cho giao tiếp không mã hóa, trong khi cổng 8883 dành cho giao tiếp mã hóa sử dụng SSL/TLS. Trong trường hợp sử dụng SSL/TLS, client cần xác thực và kiểm chứng máy chủ.
- Sau khi kết nối được thiết lập, client sẽ thực hiện vai trò của mình: Nếu là Publisher thì gửi thông điệp đến broker, còn nếu là Subscriber thì nhận thông điệp từ broker. Kết nối này duy trì cho đến khi kết thúc kết nối.
- Khi kết nối hiện tại kết thúc, quá trình truyền nhận MQTT có thể được khởi động lại bằng cách lặp lại các bước trên.
Ứng dụng của MQTT trong đời sống
Đến nay đã có rất nhiều dự án triển khai thành công hệ thống MQTT, điển hình có thể kể đến như:
- Mạng xã hội Facebook ứng dụng MQTT để tạo cuộc trò chuyện trực tuyến trên Messenger.
- Amazon Web Services chính thức ra mắt dịch vụ Amazon IoT, một nền tảng dựa trên giao thức MQTT vào năm 2015. Cùng lúc đó, Adafruit cũng đưa ra một MQTT miễn phí Cloud Service trong thí nghiệm IOT và người học được gọi Adafruit IO.
- Phiên bản mới Delta Rail của hệ thống kiểm soát hiệu IECC Scalable đã ứng dụng MQTT thành công làm nền tảng giao tiếp chính để trao đổi thông tin giữa các thành phần khác nhau trong hệ thống, bao gồm cả hệ thống báo hiệu.
- Các dịch vụ nằm trong Cơ sở hạ tầng thượng nguồn OpenStack đều được kết nối bằng một bus tin nhắn hợp nhất MQTT với Mosquitto là broker MQTT.
- Năm 2017, XIM, Inc. đã giới thiệu MQTT Buddy, một ứng dụng di động mạnh mẽ cho phép người dùng tương tác với các hệ thống MQTT trên cả nền tảng Android và iOS. Ứng dụng hỗ trợ nhiều ngôn ngữ, bao gồm tiếng Anh, Nga và Trung Quốc.
- Kể từ phiên bản 0.14, Node-RED đã tích hợp sẵn các nút MQTT, cho phép người dùng dễ dàng thiết lập kết nối an toàn với các broker MQTT bằng giao thức TLS.
- Tính năng hỗ trợ MQTT của Home Assistant góp phần làm tăng tính mở và khả năng tương thích của nền tảng này với các hệ thống IoT khác.
KẾT
Hy vọng với những thông tin mà AI.Tech chia sẻ ở bài viết trên sẽ giúp bạn có một cái nhìn tổng quan về MQTT là gì, hiểu rõ hơn về ưu điểm – hạn chế cũng như là những ứng dụng thực tiễn của giao thức này trong đời sống khoa học kỹ thuật.