2012-05-08 33 views
6

Tôi không có truy vấn cụ thể ở đây; chỉ cần một số hướng dẫn thiết kế.Cân nhắc thiết kế MQTT và MQ

Tôi đã xem qua bài viết này trên Node.js , MQTT and Websockets. Tôi đoán chúng ta có thể đạt được mục đích tương tự bằng cách sử dụng Node/Java + ActiveMQ + Websockets. Truy vấn của tôi là cách chọn giữa MQ và MQTT? Tôi có thể sử dụng máy chủ "mở" một cách an toàn như mosquitto trong một dự án quy mô lớn vừa, so với ActiveMQ không?

This article đã có một số thông tin chi tiết và có vẻ như tôi nên sử dụng cả MQ và MQTT, vì MQTT có thể có thể trợ giúp nếu tôi nhận được các khách hàng nhẹ trong tương lai.

Cảm ơn!

Trả lời

5

Thêm vào những gì Shashi đã nói, chúng có khả năng và trường hợp sử dụng khác nhau.

MQTT định nghĩa giao thức dây tiêu chuẩn cho pub/sub và, như Shashi đã lưu ý, được thiết kế cho các môi trường rất nhẹ. Như vậy nó có một định dạng dây rất tối thiểu, một vài phẩm chất cơ bản của dịch vụ và một bộ tính năng cơ bản.

Hệ thống xếp hàng nhắn truyền thống nói chung là độc quyền (mặc dù AMQP nhằm mục đích thay đổi), bao gồm cả điểm-điểm và quán rượu/phụ, cung cấp nhiều phẩm chất dịch vụ và có xu hướng có định dạng dây nặng hơn , mặc dù điều này tồn tại để hỗ trợ các tính năng nâng cao như trả lời địa chỉ, chuyển đổi giao thức, v.v.

Một ví dụ điển hình về MQTT sẽ là nơi bạn có điểm cuối trong điện thoại, máy tính bảng và hộp giải mã tín hiệu. Chúng có mã lực tối thiểu, bộ nhớ và tài nguyên hệ thống. Thông thường các kết nối từ những thứ này hoặc là duy trì MQTT và chúng tự nói chuyện với nhau, hoặc chúng được nối với một MQ cấp doanh nghiệp, nơi chúng có thể kết nối với các ứng dụng back-end. Ví dụ, một ứng dụng trò chuyện dựa trên MQTT có thể nói chuyện trực tiếp với người khác thông qua nhà môi giới MQTT. Ngoài ra, một hệ thống phân phối nội dung dựa trên MQTT sẽ kết nối với mạng nhắn tin doanh nghiệp lưu trữ quảng cáo và nội dung khác sẽ được phân phối tới các ứng dụng chạy trên điện thoại và máy tính bảng. Back-end của doanh nghiệp sẽ quản lý tất cả các số liệu thống kê về phân phối quảng cáo và lượt xem dựa trên hóa đơn nào và chân MQTT cho phép nội dung được đẩy với mức tiêu thụ pin hoặc mã lực tối thiểu trên thiết bị của người dùng cuối.

Vì vậy, MQTT được sử dụng cho các hệ thống nhúng và thiết bị người dùng cuối, nơi có sự cố về nguồn, băng thông và ổn định mạng. Điều này thường kết hợp với nhắn tin MQ truyền thống, mặc dù tôi chưa từng thấy MQTT được sử dụng làm phương tiện chuyên chở độc quyền cho các ứng dụng nhắn tin truyền thống. Có lẽ, điều này là do MQTT thiếu một số tính năng mạnh mẽ hơn như tương quan thông điệp, địa chỉ trả lời và địa chỉ point-to-point là cốt lõi để nhắn tin trong 20 năm.

+0

Cảm ơn các ví dụ! – SlowAndSteady

2

Giao thức MQTT phù hợp cho các thiết bị nhỏ như cảm biến, điện thoại di động, v.v ... có dung lượng bộ nhớ nhỏ. Các thiết bị này thường nằm trong một mạng dễ vỡ và thường có công suất tính toán thấp.

Các thiết bị này kết nối với mạng back-end của tổ chức thông qua giao thức MQTT để gửi và nhận tin nhắn. Ví dụ, một cảm biến nhiệt độ trong một đường ống dẫn dầu sẽ thu nhiệt độ của dầu chảy qua đường ống và gửi nó đến trung tâm điều khiển. Để trả lời một thông báo lệnh có thể được gửi qua MQTT tới một thiết bị khác để giảm/dừng dòng chảy của dầu qua đường ống đó.

WebSphere MQ có khả năng gửi/nhận tin nhắn đến/từ các thiết bị MQTT. Vì vậy, nếu bạn dự định triển khai giải pháp dựa trên tin nhắn liên quan đến các thiết bị cảm biến &, bạn có thể xem xét MQ và MQTT.

HTH

1

Như đã thảo luận, MQTT xác định giao thức dây ứng dụng (tức là cách thông tin được sắp xếp và sau đó được tuần tự hóa, trước khi được chuyển). Mosquitto, hoặc bất kỳ môi giới MQTT nào khác, chỉ là việc triển khai Hub and Spoke Integration Pattern, giống như JMS và AMQP dựa trên môi giới, sự khác biệt bao gồm trong giao thức dây ở mức vận tải: AMQP xác định giao thức dây vận chuyển tiêu chuẩn. ActiveMQ định nghĩa định dạng độc quyền của riêng chúng, cụ thể là OpenWire. Tất nhiên, không triển khai tiêu chuẩn, như Mosquitto, triển khai thực hiện giao thức vận tải dây độc quyền (tác động đến khả năng tương tác này, nhưng có thể là một lựa chọn tốt hơn về mặt hiệu quả).

Quay lại câu hỏi. Môi giới như Mosquitto có thể được sử dụng trong các tình huống thực tế, theo nhu cầu của bạn về khả năng mở rộng và độ tin cậy: thông thường, phân cụm là cần thiết để đảm bảo tôi. Tình trạng sẵn có, ii. Độ tin cậy và iii. Khả năng mở rộng. Môi giới suy nghĩ cho PAN (Private Area Netorks), thường không cung cấp OTB (Out of The Box) các tính năng như vậy - ActiveMQ cung cấp điều đó.

Kết luận, tùy thuộc vào yêu cầu của bạn để chọn cho bạn giải pháp tốt nhất.

Các vấn đề liên quan