MQTT Broker – Khái niệm, cách hoạt động và phân loại
MQTT Broker là một giao thức gọn nhẹ, hỗ trợ tốt trong hệ thống Internet of Things. Bài viết này sẽ giải đáp chi tiết về khái niệm MQTT Broker là gì, đặc điểm, các trường hợp cần dùng kèm theo cách làm dự án điện tử có ứng dụng MQTT nhé!
MQTT Broker là gì?
MQTT Broker là một thực thể phần mềm trung gian trong kiến trúc MQTT, cho phép các MQTT Client có thể giao tiếp với nhau. Nói ngắn gọn, MQTT Broker là nơi để nhận tin nhắn mà các Client xuất bản, lọc các tin nhắn theo một chủ đề và phân phối chúng đến những Client nào đăng ký chủ đề đó.
Bạn có thể hiểu MQTT Broker giống như một nhà môi giới bất động sản, có vai trò kiểm tra hồ sơ lý lịch của các bên liên quan tới việc mua bán bất động sản và xây dựng một bộ quy tắc riêng để đảm bảo việc giao dịch được diễn ra an toàn. Các MQTT Broker cũng có vai trò tương tự, nhưng chúng không quản lý các giao dịch bằng tiền mà sẽ quản lý giao dịch bằng tin nhắn, giúp tạo một môi trường trao đổi thông tin dễ dàng cho các khách hàng (Client) của nó:
- Cho phép các thiết bị Client gửi yêu cầu kết nối
- Xác thực thiết bị dựa trên các thông tin kết nối được chia sẻ bởi các thiết bị
- Sau khi xác thực, MQTT Broker sẽ đảm bảo các thiết bị có thể gửi và nhận tin nhắn với nhau thông qua mã hóa TLS (Transport Layer Security)
- Hỗ trợ lưu trữ các dòng tin nhắn trong Server để có thể gửi lại trong các trường hợp có sự cố như mất kết nối
Vì các MQTT Broker cho phép các thiết bị Client giao tiếp với nhau một cách độc lập, nên chúng ta có thể mở rộng kiến trúc một cách dễ dàng mà không cần phải lo lắng về vấn đề ảnh hưởng tới các Client hiện có trong hệ thống.
Ngoài ra, MQTT Broker đã là trung tâm xử lý và thực hiên tất cả các công việc trong hệ thống, nên các thiết bị Client chỉ cần xử lý với một nguồn tài nguyên và băng thông khá nhỏ. Điều này khiến giao thức MQTT là lựa chọn lý tưởng cho các dự án IoT điện tử sử dụng các mạch vi xử lý, cảm biến có giới hạn về tài nguyên.
Sự kết hợp giữa MQTT Broker và mô hình truyền thông Publish / Subscribe đã khiến giao thức MQTT có tính hiệu quả cao hơn trước và được sử dụng phổ biến hơn.
Các loại MQTT Broker
Nhìn chung thì MQTT Broker chia làm 2 loại chính:
- Managed Brokers (Brokers tự quản lý)
- Self-Hosted Brokers (Brokers tự lưu trữ)
Dưới đây, hãy cùng mình tìm hiểu chi tiết về từng loại nhé:
Managed Brokers
Managed Brokers sẽ được tự động cấu hình sẵn, bạn không cần phải thiết lập thêm bất kỳ điều gì khác trên Server của mình để tiến hành giao tiếp qua MQTT. Các dịch vụ Managed Brokers cho phép bạn có thể sử dụng các Brokers có sẵn và áp dụng vào hệ tống của mình dễ dàng.
Một ví dụ điển hình của Managed Brokers là AWS IoT Core, bạn có thể tìm hiểu thêm thông tin trên Google để tham khảo.
Self-Hosted Brokers
Với loại Brokes này, bạn cần phải tự cài đặt Brokers trên VPS hoặc máy chủ của mình thông qua địa chỉ IP tĩnh. Theo mình đánh giá thì việc tự cài Brokes này sẽ không quá khó khăn, nhưng điều khó ở đây là chúng ta phải tự quản lý, cấu hình bảo mật và tự cấu hình mở rộng quy mô khi cần. Những công việc này sẽ yêu cầu một lượng lớn kiến thức chuyên môn.
Một số mã nguồn mở về thiết lập MQTT Broker phổ biến là Mosquitto và Hivemq. Dưới đây mình sẽ giới thiệu đến bạn một số loại nhé!
Các MQTT Broker mã nguồn mở phổ biến
Mosquitto
Eclipse Mosquitto là một MQTT Broker mã nguồn mở, phù hợp cho các giao thức MQTT ở phiên bản 5.0, 3.1 và 3.1.1. Nền tảng này khá nhẹ, có thể dùng được trên cả các mạch xử lý đơn, có công suất thấp.
Bạn có thể lập trình chúng bằng ngôn ngữ C hoặc triển khai trên các thiết bị MQTT Client có hỗ trợ thư viện C. Mosquitto tương thích với hệ điều hành Linux, Windows, Mac và Raspberrry Pi. Bên trong chúng cũng hỗ trợ PHP để bạn tạo các ứng dụng MQTT Client trong PHP.
EMQX
EMQX được xem là một trong các MQTT Broker có khả năng mở rộng cao nhất khi xây dựng các dự án IoT. Nền tảng này cho phép xử lý hàng triệu tin nhắn cùng lúc, với độ trễ dưới 1 phần ngàn giây và hỗ trợ mở rộng lên đến hơn 100 triệu Client trong cùng một cụm,
EMQX tương thích với các phiên bản MQTT 5.0 và 3.x, phù hợp cho các mạng IoT phân tán và có thể chạy trên cả các mạng đám mây như của Google Cloud, Microsoft Azure,…
NanoMQ
Đây là một trong các MQTT Broker nhanh và nhẹ, phù hợp cho các ứng dụng IoT Edge. Giống như Mosquitto, nền tảng này được chạy trên ngôn ngữ C, chúng tương thích với giao thức MQTT 3.1.1 và 5.0. Ưu điểm nổi bật của NanoMQ là có tính di động cao, tương thích POSIX.
Ngoài ra, trên thị trường hiện nay cũng có nhiều loại MQTT Broker khác mà bạn có thể quan tâm, ví dụ như AWS IoT Core MQTT, VerneMQ, HiveMQ, Azure IoT Hub, ejabberd.
Lời kết
Trên đây là các thông tin chi tiết về MQTT Broker, hy vọng bạn đã hiểu hơn về chúng và có thêm kiến thức hữu ích về giao thức truyền thông trong các ứng dụng IoT. Sau này IoTZone sẽ cập nhật thêm các bài hướng dẫn chi tiết và đa dạng hơn với chủ đề MQTT, bạn nhớ theo dõi Blog Website để cập nhật nhé!