中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

消息中間件如何對(duì)接大數(shù)據(jù)

2020-03-03    來(lái)源:raincent

容器云強(qiáng)勢(shì)上線!快速搭建集群,上萬(wàn)Linux鏡像隨意使用

現(xiàn)如今,消息中間件已經(jīng)在很多公司的業(yè)務(wù)中被廣泛使用:業(yè)務(wù)解耦,消峰填谷,對(duì)接大數(shù)據(jù),流式計(jì)算等等各種玩法層出不窮。伴隨著消息中間件的使用,你一定還聽過(guò) “消息隊(duì)列”,“pub-sub”這些名詞,我們今天就來(lái)聊一下這些消息中間件提供給業(yè)務(wù)的可使用的 “Style”。

概述

不管如何使用消息中間件,其實(shí)都可以歸結(jié)到兩個(gè)步驟:消息的產(chǎn)生和消費(fèi)。消息中間件作為一種消息的暫存(當(dāng)前也可以持久存儲(chǔ))系統(tǒng),解耦消息的上下游,通過(guò)自身提供的高吞吐量,穩(wěn)定可靠性,分布式可擴(kuò)展性等一系列特性保證消息被業(yè)務(wù)合理正確處理。

消息中間件依照消息數(shù)據(jù)如何從生產(chǎn)者移動(dòng)到消費(fèi)者可提供多種不同的“Style”,我們這里介紹兩種最常見(jiàn)的 Style: 消息隊(duì)列方式 (Message queuing) 和 發(fā)布訂閱 (publish-subscribe) 方式。

消息隊(duì)列方式

消息隊(duì)列方式,就是 Message queuing。

舉個(gè)例子,我們?cè)趯懲瑫r(shí)處理大量任務(wù)的代碼時(shí),經(jīng)常會(huì)使用 work 線程池,再搭配上一個(gè)任務(wù)隊(duì)列,有任務(wù)要處理時(shí)塞進(jìn)這個(gè)任務(wù)隊(duì)列,然后 work 線程池中的空閑線程就不斷地從這個(gè)任務(wù)隊(duì)列里取出任務(wù)作處理。這里的每個(gè) work 線程就可以看成是消息的消費(fèi)者,一個(gè)任務(wù)只能被其中一個(gè) work 線程處理,每個(gè)任務(wù)的處理過(guò)程有快有慢,先被 work 線程取走的任務(wù)不一定先被完成。

用張圖來(lái)形象地說(shuō)明一下:

 

消息中間件如何對(duì)接大數(shù)據(jù)
 

 

到這里我們可以看到對(duì)于隊(duì)列方式,同一個(gè) topic 的各個(gè)消息是被各消費(fèi)者分?jǐn)傁⒌模瑸榱朔乐瓜⒈恢貜?fù)消費(fèi),通常在消費(fèi)者獲取到消息或處理完消息后對(duì) MQ 中的消息作刪除或標(biāo)記。

如果消息隊(duì)列中的消費(fèi)堆積過(guò)多,我們可以通過(guò)擴(kuò)容當(dāng)前的消費(fèi)者,來(lái)增加消息消費(fèi)的吞吐量。

發(fā)布 - 訂閱方式

發(fā)布 - 訂閱方式,就是常說(shuō)的 pub-sub 方式。

發(fā)布者 push 消息到消息中間件里的某個(gè) topic 上,各個(gè)訂閱者都會(huì)收到這個(gè) topic 上的完整的消息,即每個(gè)訂閱者都能看到一樣的完整的 topic 視圖,并且收到的消息的順序和消息被 push 到消息中間件時(shí)的順序是一致的。

我們舉個(gè)例子,比如訂閱報(bào)紙,每個(gè)訂閱者的信箱里每天都會(huì)收到相同的報(bào)紙,而且報(bào)紙肯定是按時(shí)間先后收到。

用張圖來(lái)形象地說(shuō)明一下:

 

 

發(fā)布 - 訂閱方式可以保證訂閱者接收到消息的順序,這在某些場(chǎng)景下非常有用。比如它可以用來(lái)同步數(shù)據(jù)庫(kù)的 binlog, 訂閱者通過(guò)這個(gè) binlog 可以作數(shù)據(jù)庫(kù)同步。

通過(guò)對(duì)于無(wú)狀態(tài)的應(yīng)用更常使用這種方式,因此它們不要求按順序來(lái)消費(fèi)消息數(shù)據(jù),它們更多地是希望能有更好的并發(fā)消費(fèi)能力和吞吐量。

很多消息系統(tǒng)將 topic 分成若干個(gè) partition, 為了增加消費(fèi)的吞吐量,會(huì)一味調(diào)大 partition 個(gè)數(shù),這種方式需要綜合考量,成本方面不一定是最優(yōu)的。

常見(jiàn)的消息中間件

Apache ActiveMQ, Amazon SQS, IBM Websphere MQ, RabbitMQ, 和 RocketMQ 基本上是消息隊(duì)列方式;

Apache Kafka 這個(gè)比較有意思,它兩種 style 其實(shí)都支持。如果你用來(lái) kafka, 那你一定知道在消費(fèi)時(shí)它有個(gè) consumer group 的概念。

同一個(gè) consumer group 里可以包括多個(gè) consumer, 這些同屬一個(gè) group 的 consumer 消費(fèi)數(shù)據(jù)屬于消息隊(duì)(message queuing)的方式;

如果將每一個(gè) consumer group 看作是一個(gè)整體,假設(shè)不存在內(nèi)部的 consumer, 即把這個(gè) consumer group 看作就是一個(gè) consumer , 那不同的 consumer group 消費(fèi)數(shù)據(jù)就可看作是發(fā)布 - 訂閱(pub-sub)方式;

現(xiàn)在各種消息中間件很多很多,又存在不同的 style, 我們?cè)谶x擇的時(shí)候還是要根據(jù)自己業(yè)務(wù)的需求來(lái)評(píng)估選擇。

本文: 360 云計(jì)算。

標(biāo)簽: 大數(shù)據(jù)

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請(qǐng)聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點(diǎn)!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請(qǐng)與原作者聯(lián)系。

上一篇:AI領(lǐng)域薪酬統(tǒng)計(jì):機(jī)器學(xué)習(xí)平均近3萬(wàn),數(shù)據(jù)相關(guān)崗位增速放緩

下一篇:數(shù)據(jù)科學(xué)家需要知道的5種圖算法