0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫(xiě)文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

事件驅(qū)動(dòng)的體系結(jié)構(gòu)的一些想法

汽車(chē)玩家 ? 來(lái)源:今日頭條 ? 作者:聞數(shù)起舞 ? 2020-05-03 18:39 ? 次閱讀

本文只是有關(guān)事件驅(qū)動(dòng)的體系結(jié)構(gòu)的一些想法。 這里沒(méi)有代碼,只有觀察和建議。 明確地說(shuō),我將使用事件驅(qū)動(dòng)一詞,但如果您閱讀上面的Wikipedia參考,則會(huì)發(fā)現(xiàn)我也錯(cuò)誤地混入了消息驅(qū)動(dòng)系統(tǒng)。

TLDR;

這是關(guān)于復(fù)雜性的討論,顯然是說(shuō),強(qiáng)大的力量伴隨著巨大的責(zé)任。

基于事件的架構(gòu)

基于事件的體系結(jié)構(gòu)范式的核心是事件的產(chǎn)生,檢測(cè),消耗和反應(yīng)的解耦。它們應(yīng)該在反映這一點(diǎn)的代碼中進(jìn)行組織,即與生產(chǎn),檢測(cè),消耗和反應(yīng)相關(guān)的代碼應(yīng)分別分組,并且通常還通過(guò)多個(gè)應(yīng)用程序進(jìn)行分發(fā)。盡管事情是有條理的,并且肯定有明確的因果關(guān)系,但通過(guò)系統(tǒng)的分派機(jī)制進(jìn)行的每次轉(zhuǎn)換都會(huì)充當(dāng)信息壁壘。在許多體系結(jié)構(gòu)中,如果您從第一段代碼開(kāi)始,則可以跟蹤在給定情況下從頭到尾遵循的代碼路徑,通??梢允褂谜{(diào)試器實(shí)時(shí)進(jìn)行。使用基于事件的系統(tǒng),通過(guò)事件分配器的第一跳更有可能使您感冒。您立即面臨一個(gè)問(wèn)題,即許多現(xiàn)有的聽(tīng)眾/訂戶中的哪些人將對(duì)事件做出響應(yīng),他們是否都在此過(guò)程中進(jìn)行響應(yīng),是否可以保證收據(jù),以及確定性發(fā)生的順序?

它實(shí)際上是一個(gè)公開(kāi)喊價(jià)(outcry)系統(tǒng),在通常情況下,出價(jià)(通話)和要約(響應(yīng))易于觀察和配對(duì),但是在混亂的時(shí)期,以觀察員的身份進(jìn)行的所有呼喊變得幾乎不可能。

我指的是我正在替換的當(dāng)前事件驅(qū)動(dòng)系統(tǒng),稱(chēng)為彈球機(jī),因?yàn)榍驎?huì)大量涌入,在周?chē)偪穹磸?,有的?huì)導(dǎo)致獎(jiǎng)品彈出,而有的則會(huì)消失殆盡。 您必須是粒子物理學(xué)家才能認(rèn)為系統(tǒng)是可預(yù)測(cè)的和可理解的。

級(jí)聯(lián)混沌的真實(shí)示例

我記得讀過(guò)一次關(guān)于航空公司系統(tǒng)停機(jī)的事后調(diào)查,我相信那是英國(guó)航空公司的UPS故障,恢復(fù)工作花了幾天的時(shí)間。為什么?他們的系統(tǒng)都是事件驅(qū)動(dòng)的,并掛在一條通用的消息總線上。隨著時(shí)間的流逝以及通過(guò)企業(yè)收購(gòu),IT系統(tǒng)的有機(jī)增長(zhǎng)意味著他們根本不知道到底在聽(tīng)什么,而且系統(tǒng)實(shí)施在容錯(cuò)方面也不一致。許多系統(tǒng)需要重新啟動(dòng)以重新建立通信,并且盡管UI可以快速檢測(cè)和處理,但在不能解決所有問(wèn)題時(shí),他們顯然會(huì)蠻力地"重新啟動(dòng)所有"。但是,由于系統(tǒng)之間的相互依賴(lài)性以及幾乎同時(shí)進(jìn)行的重啟,因此并非所有重啟均能正常工作。只是隨著時(shí)間的流逝,通過(guò)注意到非功能性功能才發(fā)現(xiàn)了一些問(wèn)題。例如,也許您可以預(yù)訂航班,選擇座位,登記行李,但行李標(biāo)簽不會(huì)在希思羅機(jī)場(chǎng)的柜臺(tái)打印。因此,他們必須確定應(yīng)該發(fā)生什么事件鏈,哪些鏈斷裂了,沒(méi)有發(fā)生什么事件反應(yīng)以及最后應(yīng)該由哪個(gè)系統(tǒng)執(zhí)行。

我是否要注意事件驅(qū)動(dòng)系統(tǒng)?

不。它們功能強(qiáng)大,并且在許多情況下絕對(duì)是正確的解決方案。 哎呀,我們正在用另一種事件驅(qū)動(dòng)的架構(gòu)替換彈球機(jī)。 什么?! 是的,這是我們方案中的正確工具。

因此,如果我不是說(shuō)不使用事件驅(qū)動(dòng)的體系結(jié)構(gòu),那是什么意思?

確保它們是可追蹤的

從第零天開(kāi)始進(jìn)行跟蹤和恢復(fù):

· 將關(guān)聯(lián)標(biāo)識(shí)符和發(fā)起者信息維護(hù)到事件中。

· 統(tǒng)一審核/記錄命令和事件。

· 請(qǐng)勿使用Blob或任何方案文本(如JSON)。 您希望始終使用通用語(yǔ)言,因?yàn)樵S多分布式部分正在監(jiān)聽(tīng)。 集中定義事件,并在所有地方使用這些定義。 您想知道更改對(duì)整個(gè)系統(tǒng)的影響。 提前計(jì)劃事件的演變變化。 在可能的情況下,請(qǐng)避免對(duì)現(xiàn)有字段進(jìn)行結(jié)構(gòu)更改,而應(yīng)采用"狂暴/吹掃"方法,在這種情況下,您僅進(jìn)行累加并直到要清理。

· 研究Zipkin和監(jiān)視工具之類(lèi)的東西,以顯示跟蹤信息。

· 如果另一個(gè)系統(tǒng)取決于您的事件,但又不能訂閱您的調(diào)度程序,而是從某個(gè)持久性日志中掃描事件,請(qǐng)確保它們也遵循這些規(guī)則,不要在異構(gòu)邊界上停止這些最佳做法。

這些建議似乎過(guò)于嚴(yán)格,但是我一次又一次地看到人們認(rèn)為他們可以在獲得一定收入后再解決這些問(wèn)題,然后當(dāng)問(wèn)題確實(shí)出現(xiàn)時(shí),發(fā)現(xiàn)沒(méi)有APM或快速解決方案可以追溯地真正修復(fù)生態(tài)系統(tǒng)。

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 架構(gòu)
    +關(guān)注

    關(guān)注

    1

    文章

    505

    瀏覽量

    25422
  • 事件驅(qū)動(dòng)
    +關(guān)注

    關(guān)注

    0

    文章

    9

    瀏覽量

    6730
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    GPGPU體系結(jié)構(gòu)優(yōu)化方向(1)

    繼續(xù)上文GPGPU體系結(jié)構(gòu)優(yōu)化方向 [上],介紹提高并行度和優(yōu)化流水線的方向。
    的頭像 發(fā)表于 10-09 10:03 ?156次閱讀
    GPGPU<b class='flag-5'>體系結(jié)構(gòu)</b>優(yōu)化方向(1)

    無(wú)刷DC門(mén)驅(qū)動(dòng)系統(tǒng)的體系結(jié)構(gòu)

    電子發(fā)燒友網(wǎng)站提供《無(wú)刷DC門(mén)驅(qū)動(dòng)系統(tǒng)的體系結(jié)構(gòu).pdf》資料免費(fèi)下載
    發(fā)表于 09-29 11:52 ?0次下載
    無(wú)刷DC門(mén)<b class='flag-5'>驅(qū)動(dòng)</b>系統(tǒng)的<b class='flag-5'>體系結(jié)構(gòu)</b>

    LED驅(qū)動(dòng)器應(yīng)用的一些指南和技巧

    電子發(fā)燒友網(wǎng)站提供《LED驅(qū)動(dòng)器應(yīng)用的一些指南和技巧.pdf》資料免費(fèi)下載
    發(fā)表于 09-25 11:35 ?0次下載
    LED<b class='flag-5'>驅(qū)動(dòng)</b>器應(yīng)用的<b class='flag-5'>一些</b>指南和技巧

    【書(shū)籍評(píng)測(cè)活動(dòng)NO.45】RISC-V體系結(jié)構(gòu)編程與實(shí)踐(第二版)

    火熱的RISC-V市場(chǎng) 去年,部講述 RISC-V 技術(shù)基礎(chǔ)的書(shū)在國(guó)內(nèi)市場(chǎng)掀起了陣學(xué)習(xí)熱潮,它就是 《RISC-V體系結(jié)構(gòu)編程與實(shí)踐》 ,這本書(shū)在豆瓣上更是獲得了 9.6 的高評(píng)分。 這本
    發(fā)表于 09-25 10:08

    嵌入式系統(tǒng)的體系結(jié)構(gòu)包括哪些

    嵌入式系統(tǒng)的體系結(jié)構(gòu)通常是個(gè)復(fù)雜而精細(xì)的架構(gòu),旨在滿足特定應(yīng)用需求,同時(shí)兼顧系統(tǒng)的可靠性、效率、成本和體積等多方面因素。以下是對(duì)嵌入式系統(tǒng)體系結(jié)構(gòu)的詳細(xì)解析,包括其主要組成部分、層次結(jié)構(gòu)
    的頭像 發(fā)表于 09-02 15:25 ?535次閱讀

    嵌入式微處理器體系結(jié)構(gòu) 嵌入式微處理器原理與應(yīng)用

    嵌入式微處理器是種集成于嵌入式系統(tǒng)中的微處理器,其體系結(jié)構(gòu)和應(yīng)用具有獨(dú)特特點(diǎn)。本文將詳細(xì)介紹嵌入式微處理器的體系結(jié)構(gòu)以及其原理與應(yīng)用。 、嵌入式微處理器
    的頭像 發(fā)表于 05-04 16:53 ?1962次閱讀

    嵌入式微處理器體系結(jié)構(gòu)有幾種

    微處理器體系結(jié)構(gòu)可以分為多種類(lèi)型,下面將詳細(xì)介紹其中的一些主要體系結(jié)構(gòu)。 單核體系結(jié)構(gòu) 單核體系結(jié)構(gòu)是最簡(jiǎn)單和常見(jiàn)的嵌入式微處理器
    的頭像 發(fā)表于 04-21 16:29 ?1097次閱讀

    嵌入式微處理器的體系結(jié)構(gòu)

    嵌入式微處理器的體系結(jié)構(gòu)通常包括核心架構(gòu)、指令集架構(gòu)、存儲(chǔ)體系架構(gòu)和系統(tǒng)總線架構(gòu)等關(guān)鍵組成部分。
    的頭像 發(fā)表于 03-29 11:48 ?684次閱讀

    WiMAX MAC層基礎(chǔ)知識(shí):WiMAX網(wǎng)絡(luò)體系結(jié)構(gòu)

    WiMAX形式支持的WiMAX架構(gòu)是支持固定、游牧和移動(dòng)操作的統(tǒng)網(wǎng)絡(luò)架構(gòu)。WiMAX 網(wǎng)絡(luò)體系結(jié)構(gòu)基于全 IP 模型。
    發(fā)表于 02-08 10:39 ?588次閱讀
    WiMAX MAC層基礎(chǔ)知識(shí):WiMAX網(wǎng)絡(luò)<b class='flag-5'>體系結(jié)構(gòu)</b>

    基于最新E/E體系結(jié)構(gòu)的傳感器應(yīng)用白皮書(shū)

    電子發(fā)燒友網(wǎng)站提供《基于最新E/E體系結(jié)構(gòu)的傳感器應(yīng)用白皮書(shū).pdf》資料免費(fèi)下載
    發(fā)表于 01-30 17:41 ?0次下載
    基于最新E/E<b class='flag-5'>體系結(jié)構(gòu)</b>的傳感器應(yīng)用白皮書(shū)

    智能化的計(jì)算機(jī)體系結(jié)構(gòu)設(shè)計(jì)方案

    未來(lái)計(jì)算機(jī)體系結(jié)構(gòu)將趨向于智能化和自適應(yīng)性。智能化的計(jì)算機(jī)體系結(jié)構(gòu)可以根據(jù)不同的任務(wù)和場(chǎng)景進(jìn)行智能調(diào)整,提高計(jì)算機(jī)的性能和效率。
    發(fā)表于 01-22 11:05 ?370次閱讀
    智能化的計(jì)算機(jī)<b class='flag-5'>體系結(jié)構(gòu)</b>設(shè)計(jì)方案

    《RVfpga:理解計(jì)算機(jī)體系結(jié)構(gòu)》3.0 版本更新上線

    計(jì)算機(jī)體系結(jié)構(gòu)課程,該課程針對(duì)本科教學(xué)設(shè)計(jì),包含整套豐富的教學(xué)資料和實(shí)踐練習(xí),可幫助學(xué)生了解處理器架構(gòu)中的關(guān)鍵要素,包括多個(gè)IP內(nèi)核,修改RISC-V內(nèi)核的方法,
    的頭像 發(fā)表于 01-18 08:27 ?633次閱讀
    《RVfpga:理解計(jì)算機(jī)<b class='flag-5'>體系結(jié)構(gòu)</b>》3.0 版本更新上線

    無(wú)線移動(dòng)因特網(wǎng)體系結(jié)構(gòu)、協(xié)議及業(yè)務(wù)

    電子發(fā)燒友網(wǎng)站提供《無(wú)線移動(dòng)因特網(wǎng)體系結(jié)構(gòu)、協(xié)議及業(yè)務(wù).pdf》資料免費(fèi)下載
    發(fā)表于 11-20 10:55 ?0次下載
    無(wú)線移動(dòng)因特網(wǎng)<b class='flag-5'>體系結(jié)構(gòu)</b>、協(xié)議及業(yè)務(wù)

    汽車(chē)EE體系結(jié)構(gòu)中的功能域介紹

    汽車(chē)EE體系結(jié)構(gòu)中的功能域介紹
    發(fā)表于 11-15 11:37 ?335次閱讀

    基于DSP汽車(chē)定位防盜系統(tǒng)的體系結(jié)構(gòu)分析

    、GPS 技術(shù)和GSM 技術(shù)有機(jī)結(jié)合到起,研究汽車(chē)定位防盜系統(tǒng)的體系結(jié)構(gòu)及其實(shí)現(xiàn)的可能,為良好實(shí)現(xiàn)汽車(chē)導(dǎo)航、定位和防盜奠定基礎(chǔ)。
    發(fā)表于 11-09 15:09 ?0次下載
    基于DSP汽車(chē)定位防盜系統(tǒng)的<b class='flag-5'>體系結(jié)構(gòu)</b>分析