|
本文主要在產(chǎn)品概述的基礎(chǔ)上介紹微消息隊列 MQTT 和傳統(tǒng)消息中間件的關(guān)聯(lián)和區(qū)別,并針對實際應(yīng)用場景下的產(chǎn)品選型給出建議。 背景信息傳統(tǒng)的消息中間件,例如消息隊列 RocketMQ、消息隊列 Kafka 等都是面向微服務(wù)大數(shù)據(jù)等領(lǐng)域,負責(zé)消息的存儲和轉(zhuǎn)發(fā),消息的生產(chǎn)者和消費者都是服務(wù)端應(yīng)用。 這種設(shè)計很適合服務(wù)端技術(shù)棧固定、語言平臺固定的場景。而移動互聯(lián)網(wǎng)和 IoT 領(lǐng)域則有所不同,這類場景更側(cè)重于多語言多平臺的海量設(shè)備接入,消息的生產(chǎn)和消費過程的業(yè)務(wù)屬性很突出,傳統(tǒng)的消息中間件并不適合這些領(lǐng)域。 秉承單一職責(zé)的原則,微消息隊列 MQTT 在設(shè)計上是一個面向移動互聯(lián)網(wǎng)和 IoT 領(lǐng)域的無狀態(tài)網(wǎng)關(guān),只關(guān)心海量移動端設(shè)備的接入、管理和消息傳輸,消息數(shù)據(jù)的存儲則都會路由給后端存儲產(chǎn)品,例如傳統(tǒng)的消息中間件消息隊列 RocketMQ、消息隊列 Kafka 等產(chǎn)品。 在這種職責(zé)劃分下,終端設(shè)備將消息發(fā)送到微消息隊列 MQTT 后,消息會根據(jù)微消息隊列 MQTT 綁定的存儲產(chǎn)品被路由到指定產(chǎn)品,云端應(yīng)用依然可以維持傳統(tǒng)的微服務(wù)開發(fā)方案,通過對接云端存儲產(chǎn)品即可和終端設(shè)備進行互動,兩者之間通過微消息隊列 MQTT 實現(xiàn)了數(shù)據(jù)互通能力。 適用場景對比在一個業(yè)務(wù)場景中,可能包含多種不同類型的應(yīng)用組件,每個組件承擔(dān)不同的角色。因此,在方案選型時如需要使用到消息產(chǎn)品,需要先了解微消息隊列 MQTT 和傳統(tǒng)消息中間件的關(guān)聯(lián)和區(qū)別,合理搭配使用,比如組件 A 的消息收發(fā)使用微消息隊列 MQTT,組件 B 的消息收發(fā)使用消息隊列 RocketMQ。 下文將根據(jù)場景舉例描述微消息隊列 MQTT 和傳統(tǒng)的消息中間件的區(qū)別,為方便描述,傳統(tǒng)的消息中間件以消息隊列 RocketMQ 為例,其他產(chǎn)品例如消息隊列 Kafka 和消息隊列 AMQP(RabbitMQ)同理。
組合使用場景示例
基于以上區(qū)別,推薦您在移動端設(shè)備上使用微消息隊列 MQTT,而在服務(wù)端應(yīng)用中則使用消息隊列 RocketMQ(或者其他消息產(chǎn)品)。 功能對比微消息隊列 MQTT 和消息隊列 RocketMQ 的具體功能特性的對比如下:
選型指導(dǎo)基本原則總結(jié)如下:
針對常見的應(yīng)用場景,建議的微消息隊列 MQTT 和消息隊列 RocketMQ 選型如下:
|
|
|
來自: liang1234_ > 《mqtt》