掃二維碼與項(xiàng)目經(jīng)理溝通
我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流
事件驅(qū)動(dòng)架構(gòu)是由生產(chǎn)者和消費(fèi)者組成,生產(chǎn)者負(fù)責(zé)生產(chǎn)事件,消費(fèi)者監(jiān)聽并消費(fèi)事件。

創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供隆昌網(wǎng)站建設(shè)、隆昌做網(wǎng)站、隆昌網(wǎng)站設(shè)計(jì)、隆昌網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、隆昌企業(yè)網(wǎng)站模板建站服務(wù),十年隆昌做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
事件驅(qū)動(dòng)架構(gòu)
事件分發(fā)以近實(shí)時(shí)的方式進(jìn)行,所以當(dāng)事件產(chǎn)生時(shí),消費(fèi)者可以立即做出應(yīng)對(duì)。
還有一種模式,多個(gè)消費(fèi)者是競(jìng)爭(zhēng)的關(guān)系,它們從同一個(gè)隊(duì)列消費(fèi),不出現(xiàn)錯(cuò)誤的情況下每個(gè)事件都只被處理一次。
另外,在某些系統(tǒng)中,事件導(dǎo)入的吞吐量要求也很高,比如IoT系統(tǒng)。
事件驅(qū)動(dòng)架構(gòu)可以通過發(fā)布/訂閱模型或事件流模型來實(shí)現(xiàn):
在事件的消費(fèi)上,也可以有一些略微不同的方式:
事件通常來源于外部系統(tǒng),比如IoT中的物理設(shè)備、互聯(lián)網(wǎng)用戶的端上。我們?cè)谠O(shè)計(jì)時(shí),必須認(rèn)真評(píng)估總體的數(shù)據(jù)量和吞吐量,以保證系統(tǒng)能支撐這個(gè)量級(jí)。
在上面的流程圖中,右側(cè)的三個(gè)格子表示三種類型的消費(fèi)者,每種類型的消費(fèi)者下面有多個(gè)實(shí)例。在實(shí)際場(chǎng)景中,出于容災(zāi)的目的,多個(gè)消費(fèi)者實(shí)例的情況非常普遍。為了保證事件處理的吞吐量,多個(gè)實(shí)例也是有必要的。
在處理事件時(shí),一個(gè)消費(fèi)者實(shí)例可以創(chuàng)建多個(gè)線程。這也能提高處理的吞吐量,不過事件被處理的順序就亂了,業(yè)務(wù)上可能無法接受;另外多線程處理也很難保證exactly-once語(yǔ)義。
在設(shè)計(jì)系統(tǒng)時(shí),我們通常需要考慮單條消息的大小,它對(duì)系統(tǒng)的性能和金錢成本影響都非常大。如果走兩個(gè)極端的話,可以是:
如果將所有需要的信息都放到單個(gè)事件里,處理起來會(huì)很方便,并且能夠避免額外的信息查詢。
如果將非常少的信息放到單個(gè)事件里,比如ID字段,那么會(huì)節(jié)省大量傳輸數(shù)據(jù)的時(shí)間和金錢成本,但其他信息需要訪問其他服務(wù)才能獲取到。
這其中的利益權(quán)衡,看自己的業(yè)務(wù)來定了。

我們?cè)谖⑿派?4小時(shí)期待你的聲音
解答本文疑問/技術(shù)咨詢/運(yùn)營(yíng)咨詢/技術(shù)建議/互聯(lián)網(wǎng)交流