溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

MQTT與Kafka怎么理解

發(fā)布時(shí)間:2021-12-07 09:52:01 來(lái)源:億速云 閱讀:144 作者:iii 欄目:互聯(lián)網(wǎng)科技

這篇文章主要介紹“MQTT與Kafka怎么理解”,在日常操作中,相信很多人在MQTT與Kafka怎么理解問(wèn)題上存在疑惑,小編查閱了各式資料,整理出簡(jiǎn)單好用的操作方法,希望對(duì)大家解答”MQTT與Kafka怎么理解”的疑惑有所幫助!接下來(lái),請(qǐng)跟著小編一起來(lái)學(xué)習(xí)吧!

MQTT 與 Kafka 是完全不同的兩個(gè)東西, MQTT 是協(xié)議,是一個(gè)技術(shù)標(biāo)準(zhǔn),由 OASIS 技術(shù)委員會(huì)的成員(其成員多數(shù)為 IBM 和微軟的頂級(jí)工程師)制訂。而 Kafka 是已經(jīng)實(shí)現(xiàn)的開源流處理平臺(tái),最早由 LinkedIn 開發(fā),于2011年開源后交給 Apache Incubator 孵化后成為了 Apache 軟件基金會(huì)的頂級(jí)項(xiàng)目。

兩者之前唯一存在的聯(lián)系恐怕就是它們都和發(fā)布/訂閱范式有關(guān)了吧。MQTT 是基于發(fā)布/訂閱范式的消息協(xié)議,而 Apache Kafka 的生產(chǎn)、消費(fèi)的流程也是屬于發(fā)布/訂閱范式的。那么如果我們基于 MQTT 協(xié)議去實(shí)現(xiàn)一個(gè)消息 broker ,是否這個(gè) MQTT broker是否能和 Kafka 作用等價(jià)呢? 答案當(dāng)然是否定的!

Kafka 雖然也是基于發(fā)布訂閱范式的消息系統(tǒng),但它同時(shí)也被稱為“分布式提交日志”或者“分布式流平臺(tái)”,它的最主要的作用還是實(shí)現(xiàn)分布式持久化保存數(shù)據(jù)的目的。Kafka 的數(shù)據(jù)單元就是消息,可以把它當(dāng)作數(shù)據(jù)庫(kù)里的一行“數(shù)據(jù)”或者一條“記錄”來(lái)理解,Kafka 通過(guò)主題來(lái)進(jìn)行分類,Kafka 的生產(chǎn)者發(fā)布消息到某一特定主題上,由消費(fèi)者去消費(fèi)特定主題的消息,其實(shí)生產(chǎn)者和消費(fèi)者就可以理解成發(fā)布者和訂閱者,主題就好比數(shù)據(jù)庫(kù)中的表,每個(gè)主題包含多個(gè)分區(qū),分區(qū)可以分布在不同的服務(wù)器上,也就是說(shuō)通過(guò)這種方式來(lái)實(shí)現(xiàn)分布式數(shù)據(jù)的存儲(chǔ)和讀取, Kafka 分布式的架構(gòu)利于讀寫系統(tǒng)的擴(kuò)展和維護(hù)(比如說(shuō)通過(guò)備份服務(wù)器來(lái)實(shí)現(xiàn)冗災(zāi)備份,通過(guò)架構(gòu)多個(gè)服務(wù)器節(jié)點(diǎn)來(lái)實(shí)現(xiàn)性能的提升),在很多有大數(shù)據(jù)分析需求的大型企業(yè),都會(huì)用到 Kafka 去做數(shù)據(jù)流處理的平臺(tái)。

而 MQTT 最開始就是為物聯(lián)網(wǎng)設(shè)備的網(wǎng)絡(luò)接入而設(shè)計(jì)的,物聯(lián)網(wǎng)設(shè)備大多都是性能低下,功耗較低的計(jì)算機(jī)設(shè)備,而且網(wǎng)絡(luò)連接的質(zhì)量也是不可靠的,所以在設(shè)計(jì)協(xié)議的時(shí)候最需要考慮的幾個(gè)重點(diǎn)是:

  1. 協(xié)議要足夠輕量,方便嵌入式設(shè)備去快速地解析和響應(yīng)。

  2. 具備足夠的靈活性,使其足以為 IoT 設(shè)備和服務(wù)的多樣化提供支持。

  3. 應(yīng)該設(shè)計(jì)為異步消息協(xié)議而非同步協(xié)議,這么做是因?yàn)榇蠖鄶?shù) IoT 設(shè)備的網(wǎng)絡(luò)延遲很可能非常不穩(wěn)定,若使用同步消息協(xié)議,IoT 設(shè)備需要等待服務(wù)器的響應(yīng),對(duì)于為大量的 IoT 設(shè)備提供服務(wù)這一情景,顯然是非常不現(xiàn)實(shí)的。

  4. 必須是雙向通信,服務(wù)器和客戶端應(yīng)該可以互相發(fā)送消息。

MQTT 協(xié)議完美地解決了上述幾點(diǎn)要求,并且最新版的 MQTT v5.0 協(xié)議做了很多優(yōu)化,使其協(xié)議相比過(guò)去的  v3.1.1  版本具備更強(qiáng)大的靈活性以及對(duì)帶寬的更少占用。

要說(shuō)基于 MQTT 協(xié)議的消息 broker 和 Kafka 的區(qū)別的話,EMQ 君認(rèn)為還是在于它們的側(cè)重點(diǎn)不同,Kafka 的側(cè)重點(diǎn)在于數(shù)據(jù)的存儲(chǔ)和讀取,針對(duì)實(shí)時(shí)性比較高的流式數(shù)據(jù)處理場(chǎng)景;而 MQTT broker 的側(cè)重點(diǎn)在于客戶端和服務(wù)器的通信。

MQTT  broker 與 Kafka 所采用的消息交換范式是如此相近,將其兩者結(jié)合起來(lái)使用顯然是一個(gè)非常不錯(cuò)的主意,事實(shí)上,很多 MQTT broker,諸如 EMQ X 已經(jīng)實(shí)現(xiàn)了 MQTT broker 與 Kafka 的橋接。MQTT broker 用來(lái)快速的對(duì)大量物聯(lián)網(wǎng)設(shè)備發(fā)來(lái)的消息做接收處理響應(yīng),而 Kafka 對(duì)這些大量的數(shù)據(jù)做采集存儲(chǔ),交給數(shù)據(jù)分析人員來(lái)分析處理消息。

到此,關(guān)于“MQTT與Kafka怎么理解”的學(xué)習(xí)就結(jié)束了,希望能夠解決大家的疑惑。理論與實(shí)踐的搭配能更好的幫助大家學(xué)習(xí),快去試試吧!若想繼續(xù)學(xué)習(xí)更多相關(guān)知識(shí),請(qǐng)繼續(xù)關(guān)注億速云網(wǎng)站,小編會(huì)繼續(xù)努力為大家?guī)?lái)更多實(shí)用的文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI