更新時(shí)間:2020-05-29 來(lái)源:黑馬程序員 瀏覽量:
大數(shù)據(jù)系統(tǒng)面臨的首要困難是海量數(shù)據(jù)之間該如何進(jìn)行傳輸。為了解決大數(shù)據(jù)集的傳輸困難,就必須要構(gòu)建一個(gè)消息系統(tǒng)。一個(gè)消息系統(tǒng)負(fù)責(zé)將數(shù)據(jù)從一個(gè)應(yīng)用程序傳遞到另外一個(gè)應(yīng)用程序中,應(yīng)用程序只關(guān)注數(shù)據(jù),無(wú)須關(guān)注數(shù)據(jù)在多個(gè)應(yīng)用之間是如何傳遞的,分布式消息傳遞基于可靠的消息隊(duì)列,在客戶(hù)端應(yīng)用和消息系統(tǒng)之間異步傳遞消息。
目前市面上有許多消息系統(tǒng),如Kafka、RabbitMQ、ActiveMQ等。Kafka是專(zhuān)門(mén)為分布式高吞吐量系統(tǒng)而設(shè)計(jì)開(kāi)發(fā)的,它非常適合在海量數(shù)據(jù)集的應(yīng)用程序中進(jìn)行消息傳遞。消息傳遞一共有兩種模式,分別是點(diǎn)對(duì)點(diǎn)消息傳遞模式和發(fā)布訂閱消息傳遞模式。接下來(lái),詳細(xì)講解消息傳遞的兩種模式。
1、點(diǎn)對(duì)點(diǎn)消息傳遞模式
點(diǎn)對(duì)點(diǎn)消息傳遞模式(Pointtopoint,P2P),通常是一個(gè)基于拉取或者輪詢(xún)的消息傳遞模式,其消息傳遞結(jié)構(gòu)如下圖。
圖中所示的點(diǎn)對(duì)點(diǎn)消息傳遞模式結(jié)構(gòu)中,消息是通過(guò)一個(gè)虛擬通道進(jìn)行傳遞的,生產(chǎn)者發(fā)送一條數(shù)據(jù),消息將持久化到一個(gè)隊(duì)列中,此時(shí)將有一個(gè)或者多個(gè)消費(fèi)者會(huì)消費(fèi)隊(duì)列中的數(shù)據(jù),但是一條消息只能被消費(fèi)一次,并且消費(fèi)后的消息會(huì)從消息隊(duì)列中刪除,因此,即使有多個(gè)消費(fèi)者同時(shí)消費(fèi)數(shù)據(jù),數(shù)據(jù)都可以被有序處理。
2、發(fā)布訂閱消息傳遞模式
發(fā)布訂閱消息傳遞模式(Publish//Subscribe)是一個(gè)基于推送的消息傳送模式,其消息傳遞結(jié)構(gòu)如下圖所示:
從上圖中可以看出,在發(fā)布訂閱模式中,發(fā)布者用于發(fā)布消息,訂閱者用于訂閱消息,發(fā)布訂閱模式可以有多種不同的訂閱者,發(fā)布者發(fā)布的消息會(huì)被持久化到一個(gè)主題中,與點(diǎn)對(duì)點(diǎn)模式不同的是,訂閱者可以訂閱一個(gè)或多個(gè)主題,訂閱者可以讀取該主題中的所有數(shù)據(jù),同一條數(shù)據(jù)可以被多個(gè)訂閱者消費(fèi),數(shù)據(jù)被消費(fèi)后也不會(huì)立即刪除。
猜你喜歡:
大數(shù)據(jù)培訓(xùn)之flink從入門(mén)到精通視頻教程【黑馬程序員】
2020-05-14Hadoop與Spark的區(qū)別有哪些?【大數(shù)據(jù)培訓(xùn)】
2020-04-24Spark計(jì)算框架在處理數(shù)據(jù)時(shí)有什么優(yōu)勢(shì)?【大數(shù)據(jù)培訓(xùn)】
2020-04-24Spark發(fā)展史:讓你了解是什么Spark?
2020-04-23機(jī)器學(xué)習(xí)可以應(yīng)用于哪些領(lǐng)域?【大數(shù)據(jù)培訓(xùn)】
2020-04-23什么是機(jī)器學(xué)習(xí)?【大數(shù)據(jù)培訓(xùn)】
2020-04-23