2024-01-12 21:25 — 5 phút đọc

MQTT là gì?

#software-architecture#how-to#mqtt


MQTT

MQTT là gì?

MQTT là một giao thức truyền thông đơn giản, nhẹ và đáng tin cậy được phát triển vào năm 1999 bởi Andy Stanford-Clark (IBM) và Arlen Nipper (Arcom, nay là Cirrus Link) để gửi các message giữa các thiết bị IoT. MQTT là viết tắt của Message Queue Telemetry Transport.

Nói qua về MQTT chúng ta sẽ tìm hiểu xoay quanh các khái niệm cụ thể như sau:

  • MQTT Clients: Là các thiết bị kết nối tới MQTT Broker để gửi và nhận các message.
  • MQTT Broker: Là một server chạy MQTT protocol để nhận và phân phối các message tới các MQTT Clients.
  • MQTT QoS(Quality of Service): Là một cơ chế để đảm bảo các message được gửi tới MQTT Broker và được phân phối tới các MQTT Clients một cách đáng tin cậy.
  • MQTT Persistent Session: Là một cơ chế để đảm bảo các message được gửi tới MQTT Broker khi MQTT Client không kết nối tới MQTT Broker.
  • Retained Message: Là một cơ chế để đảm bảo các message được gửi tới MQTT Broker khi MQTT Client kết nối tới MQTT Broker.
  • Last Will and Testament (LWT): Là một cơ chế để đảm bảo các message được gửi tới MQTT Broker khi MQTT Client bị mất kết nối tới MQTT Broker.

MQTT Clients

Cụ thể nó là các thiết bị kết nối tới MQTT Broker để gửi và nhận các message. Các MQTT Clients có thể là các thiết bị IoT, mobile, web … Được kết nối với Broker thông qua các giao thức TCP, TLS, Websocket.

Trong giao dịch payment thì các MQTT Clients là các thiết bị POS, Mobile, Web, ATM, Vending Machine, … Các thiết bị này sẽ gửi các message về cho MQTT Broker để xử lý.

MQTT Broker

Nó có thể là một server chạy MQTT protocol để nhận và phân phối các message tới các MQTT Clients. Nó chạy được trên nhiều môi trường, OS khác nhau, các thiết bị như Raspberry Pi, PC, Server … Các MQTT Broker có thể là Mosquitto, HiveMQ, RabbitMQ, ActiveMQ, … Các MQTT Broker có thể được triển khai theo mô hình cluster để đảm bảo tính sẵn sàng cao.

MQTT QoS(Quality of Service)

Là một cơ chế để đảm bảo các message được gửi tới MQTT Broker và được phân phối tới các MQTT Clients một cách đáng tin cậy. Có 3 mức độ QoS là 0, 1, 2.

  • QoS 0: Các message được gửi tới MQTT Broker một cách đơn giản, không đảm bảo tính đáng tin cậy. Các message có thể bị mất hoặc bị trùng lặp.
  • QoS 1: Các message được gửi tới MQTT Broker và được phân phối tới các MQTT Clients một cách đáng tin cậy. Các message được gửi tới MQTT Broker một lần và được phân phối tới các MQTT Clients một lần. Các message có thể bị trùng lặp.
  • QoS 2: Các message được gửi tới MQTT Broker và được phân phối tới các MQTT Clients một cách đáng tin cậy. Các message được gửi tới MQTT Broker một lần và được phân phối tới các MQTT Clients một lần. Các message không bị trùng lặp. Tuy nhiên performance của QoS 2 thấp hơn QoS 1.

MQTT Persistent Session

Là một cơ chế để đảm bảo các message được gửi tới MQTT Broker khi MQTT Client không kết nối tới MQTT Broker. Các message được gửi tới MQTT Broker sẽ được lưu lại trong một khoảng thời gian nhất định. Khi MQTT Client kết nối tới MQTT Broker thì các message sẽ được phân phối tới MQTT Client.

Retained Message

Là một cơ chế để đảm bảo các message được gửi tới MQTT Broker khi MQTT Client kết nối tới MQTT Broker. Các message được gửi tới MQTT Broker sẽ được lưu lại và được phân phối tới MQTT Client khi MQTT Client kết nối tới MQTT Broker.

Last Will and Testament (LWT)

Là một cơ chế để đảm bảo các message được gửi tới MQTT Broker khi MQTT Client bị mất kết nối tới MQTT Broker. Các message được gửi tới MQTT Broker sẽ được lưu lại và được phân phối tới MQTT Client khi MQTT Client kết nối tới MQTT Broker.

Tại sao lại là MQTT mà không sử dụng các giao thức khác?

Trong hệ thống thanh toán thì các giao thức như HTTP, gRPC, AMQP, … đều có thể được sử dụng để giao tiếp giữa các service với nhau. Tuy nhiên MQTT lại có những ưu điểm sau:

  • MQTT là một giao thức đơn giản, nhẹ và đáng tin cậy. Nó có thể chạy trên các thiết bị IoT, mobile, web, … MQTT có thể chạy trên các thiết bị có tài nguyên hạn chế.
  • MQTT có thể chạy trên nhiều môi trường, OS khác nhau.

Tại sao sử dụng MQTT trong hệ thống thanh toán lại hiệu quả?

Việc phản hồi ngay lập tức giữa server và client mang lại trải nghiệm tốt cho người dùng cuối. MQTT có thể đảm bảo được việc truyền tải dễ dàng trong khi vẫn đảm bảo được hiệu năng của hệ thống. Các thiết bị có tài nguyên khiêm tốn vẫn có thể nhận được các message từ MQTT Broker.

Tìm hiểu thêm: Hệ thống push notification hoạt động như thế nào?


aitu avatar

Hi! Tôi là Tuyên — Hiện tại tôi đang làm Software Architect, Senior developer tại một công ty nhỏ ở Hà Nội. Tôi cảm thấy thích thú, đam mê, yêu thích với việc viết lách và chia sẻ những kiến thức mà tôi biết. Hãy đọc nhiều hơn tại blogs và tới about để biết thêm về tôi nhé.