Khi Nào Nên Dùng MQTT Thay Vì HTTP Cho API?

Ashley Innocent

Ashley Innocent

13 tháng 3 2026

Khi Nào Nên Dùng MQTT Thay Vì HTTP Cho API?

Apidog cho doanh nghiệp

Triển khai tại chỗ

SSO & RBAC

Tuân thủ SOC 2

Khám phá Apidog Enterprise

TL;DR

Sử dụng MQTT cho các thiết bị IoT có pin hạn chế, mạng không ổn định hoặc các mô hình nhắn tin pub-sub. Sử dụng HTTP cho các API web/di động tiêu chuẩn. MQTT sử dụng tiêu đề 2 byte so với hơn 100 byte của HTTP, lý tưởng cho các thiết bị bị hạn chế tài nguyên. Modern PetstoreAPI triển khai MQTT cho vòng cổ theo dõi thú cưng và máy cho ăn thông minh.

Giới thiệu

Vòng cổ theo dõi thú cưng của bạn cần gửi cập nhật vị trí cứ sau 5 phút. Nó chạy bằng pin cúc áo có thời lượng sử dụng 6 tháng. Sử dụng HTTP, pin hết sau 2 tuần. Sử dụng MQTT, nó kéo dài đủ 6 tháng.

HTTP là tiêu chuẩn cho API, nhưng nó được thiết kế cho trình duyệt web, không phải thiết bị IoT. MQTT (Message Queuing Telemetry Transport) được xây dựng cho các thiết bị bị hạn chế tài nguyên với băng thông giới hạn và mạng không ổn định.

Modern PetstoreAPI sử dụng HTTP cho ứng dụng web và di động, nhưng MQTT cho các thiết bị IoT: vòng cổ theo dõi thú cưng, máy cho ăn thông minh và thiết bị theo dõi sức khỏe.

💡
Nếu bạn đang xây dựng hoặc kiểm tra API IoT, Apidog hỗ trợ kiểm tra MQTT cùng với HTTP. Bạn có thể kiểm tra các mô hình pub-sub, xác thực định dạng tin nhắn và mô phỏng lỗi mạng.
tải ứng dụng

Trong hướng dẫn này, bạn sẽ tìm hiểu khi nào MQTT vượt trội hơn HTTP, xem các ví dụ thực tế từ Modern PetstoreAPI và khám phá cách chọn giao thức phù hợp cho trường hợp sử dụng của bạn.

MQTT là gì?

MQTT là một giao thức nhắn tin pub-sub nhẹ được thiết kế cho IoT.

Cách MQTT hoạt động

Các thiết bị xuất bản tin nhắn tới các chủ đề. Các thiết bị khác đăng ký các chủ đề:

Publisher (Vòng cổ thú cưng):
  Topic: pets/019b4132/location
  Payload: {"lat":37.7749,"lng":-122.4194,"battery":85}

Subscriber (Ứng dụng di động):
  Subscribe to: pets/019b4132/location
  Receives: {"lat":37.7749,"lng":-122.4194,"battery":85}

MQTT Broker nằm ở giữa, định tuyến tin nhắn từ các nhà xuất bản đến các người đăng ký.

Các tính năng chính của MQTT

1. Tiêu đề nhỏ gọn - MQTT: 2 byte, HTTP: 100-500 byte

2. Kết nối liên tục - MQTT giữ kết nối mở

3. Chất lượng dịch vụ (QoS) - QoS 0/1/2 để đảm bảo phân phối

4. Last Will - Tin nhắn được gửi nếu thiết bị ngắt kết nối đột ngột

5. Tin nhắn được giữ lại - Broker lưu trữ tin nhắn cuối cùng cho người đăng ký mới

So sánh MQTT và HTTP

Tính năng MQTT HTTP
Kích thước tiêu đề 2 byte 100-500 byte
Mô hình Pub-Sub Request-Response
Kết nối Liên tục Theo yêu cầu
Băng thông Rất thấp Cao hơn
Ảnh hưởng đến pin Tối thiểu Đáng kể
Hỗ trợ trình duyệt Qua WebSocket Gốc

Ví dụ về băng thông

1000 cập nhật vị trí mỗi ngày:

MQTT sử dụng băng thông ít hơn 8 lần.

Khi nào MQTT thắng thế

1. Thiết bị IoT có pin hạn chế

Vòng cổ theo dõi thú cưng:

Lý do: Kết nối liên tục, tiêu đề nhỏ gọn, ít thời gian bật sóng hơn.

2. Mạng không ổn định

Thiết bị IoT di động với vùng phủ sóng chập chờn:

3. Giao tiếp nhiều-tới-nhiều

Kịch bản máy cho ăn thú cưng thông minh:

Feeder 1 → pets/019b4132/feeding
Feeder 2 → pets/019b4127/feeding
App 1 → đăng ký pets/+/feeding (tất cả thú cưng)
App 2 → đăng ký pets/019b4132/feeding (một thú cưng)

4. Dữ liệu cảm biến thời gian thực

Thiết bị theo dõi sức khỏe thú cưng gửi cập nhật mỗi giây:

Khi nào HTTP thắng thế

1. Ứng dụng web/di động tiêu chuẩn

HTTP là phổ biến:

2. Mô hình yêu cầu-phản hồi

Lấy chi tiết thú cưng:

GET /pets/019b4132
200 OK
{"name":"Fluffy","species":"CAT"}

HTTP đơn giản hơn cho yêu cầu-phản hồi.

3. Yêu cầu bộ nhớ đệm (Caching)

Bộ nhớ đệm HTTP hoạt động ngay lập tức:

MQTT không có bộ nhớ đệm.

4. API RESTful

Mã trạng thái, phương thức và ngữ nghĩa HTTP:

Modern PetstoreAPI sử dụng MQTT như thế nào

Modern PetstoreAPI triển khai MQTT cho các thiết bị IoT.

Vòng cổ theo dõi thú cưng

Vòng cổ xuất bản vị trí:

Topic: pets/019b4132/location
QoS: 1 (ít nhất một lần)
Payload: {
  "lat": 37.7749,
  "lng": -122.4194,
  "battery": 85,
  "timestamp": "2026-03-13T10:30:00Z"
}

Ứng dụng di động đăng ký:

const mqtt = require('mqtt');
const client = mqtt.connect('mqtts://mqtt.petstoreapi.com');

client.subscribe('pets/019b4132/location');

client.on('message', (topic, message) => {
  const location = JSON.parse(message);
  updateMap(location.lat, location.lng);
});

Máy cho ăn thông minh

Máy cho ăn đăng ký lịch trình:

Topic: pets/019b4132/feeding-schedule
Retained: true
Payload: {
  "times": ["08:00", "18:00"],
  "amount": 100
}

Máy cho ăn xuất bản sự kiện cho ăn:

Topic: pets/019b4132/feeding-events
Payload: {
  "timestamp": "2026-03-13T08:00:15Z",
  "amount": 100,
  "dispensed": true
}

Thiết bị theo dõi sức khỏe

Thiết bị theo dõi xuất bản chỉ số quan trọng:

Topic: pets/019b4132/health
QoS: 0 (gửi một lần, tần số cao)
Payload: {
  "heartRate": 120,
  "temperature": 38.5,
  "activity": "resting"
}

Kiểm tra MQTT với Apidog

Apidog hỗ trợ kiểm tra MQTT cùng với HTTP và các giao thức khác.

Kiểm tra MQTT Pub-Sub

  1. Kết nối với MQTT broker
  2. Đăng ký các chủ đề
  3. Xuất bản tin nhắn thử nghiệm
  4. Xác thực định dạng tin nhắn
  5. Kiểm tra các cấp độ QoS

Mô phỏng lỗi mạng

So sánh với HTTP

Kiểm tra cùng chức năng với cả hai giao thức:

Kết luận

MQTT và HTTP phục vụ các mục đích khác nhau. Sử dụng MQTT cho các thiết bị IoT có tài nguyên hạn chế. Sử dụng HTTP cho các API web/di động tiêu chuẩn.

Modern PetstoreAPI cho thấy cách sử dụng cả hai: HTTP cho API hướng đến người dùng, MQTT cho các thiết bị IoT. Giao thức phù hợp phụ thuộc vào các ràng buộc của bạn, không phải giao thức nào "tốt hơn".

Kiểm tra cả hai giao thức với Apidog để tìm ra lựa chọn phù hợp nhất cho trường hợp sử dụng của bạn.

tải ứng dụng

Câu hỏi thường gặp

MQTT có thể hoạt động qua HTTP không?

MQTT có thể chạy qua WebSocket, mà WebSocket hoạt động qua HTTP. Điều này giúp xuyên qua tường lửa nhưng làm mất đi một số lợi ích về hiệu quả của MQTT.

Các cấp độ QoS của MQTT là gì?

MQTT có an toàn không?

Có, MQTT hỗ trợ mã hóa TLS (MQTTS) và xác thực bằng tên người dùng/mật khẩu. Modern PetstoreAPI sử dụng MQTTS cho tất cả các thiết bị IoT.

Trình duyệt có thể sử dụng MQTT không?

Trình duyệt có thể sử dụng MQTT qua WebSocket. Các thư viện như MQTT.js hỗ trợ môi trường trình duyệt.

MQTT so sánh với WebSocket như thế nào?

MQTT là một giao thức có thể chạy qua WebSocket. WebSocket là một lớp vận chuyển. MQTT bổ sung các tính năng pub-sub, QoS và các tính năng cụ thể cho IoT lên trên WebSocket.

Thực hành thiết kế API trong Apidog

Khám phá cách dễ dàng hơn để xây dựng và sử dụng API

Khi Nào Nên Dùng MQTT Thay Vì HTTP Cho API?