日韩成人免费在线_国产成人一二_精品国产免费人成电影在线观..._日本一区二区三区久久久久久久久不

當前位置:首頁 > 科技  > 軟件

現(xiàn)代軟件架構:事件驅動設計遇上事件溯源

來源: 責編: 時間:2023-12-13 17:02:10 223觀看
導讀在當今的軟件領域中,做出正確的架構決策對于確保性能、可擴展性、可維護性和整體成功至關重要。在眾多模式中,事件驅動架構(EDA)和事件溯源(ES)作為復雜軟件系統(tǒng)最受歡迎的兩種選擇之一。雖然可以單獨使用EDA或ES,但它們的結

在當今的軟件領域中,做出正確的架構決策對于確保性能、可擴展性、可維護性和整體成功至關重要。在眾多模式中,事件驅動架構(EDA)和事件溯源(ES)作為復雜軟件系統(tǒng)最受歡迎的兩種選擇之一。雖然可以單獨使用EDA或ES,但它們的結合可能效果驚人。SQi28資訊網(wǎng)——每日最新資訊28at.com

SQi28資訊網(wǎng)——每日最新資訊28at.com

事件驅動架構與傳統(tǒng)的請求驅動系統(tǒng)相對立,傳統(tǒng)系統(tǒng)中組件通過緊密耦合的方式顯式調(diào)用彼此的方法或直接使用同步的API調(diào)用。在事件驅動架構中,組件通過事件間接通信,松耦合,促進靈活性、可擴展性和模塊化。SQi28資訊網(wǎng)——每日最新資訊28at.com

事件溯源,另一個強大的設計模式也利用事件,強調(diào)維護事件的時間順序記錄,以實現(xiàn)更好的審計、分析和歷史跟蹤。事件溯源的主要理念是最終一致性。SQi28資訊網(wǎng)——每日最新資訊28at.com

讓我們來詳細了解它們,并看看如何將它們結合起來,構建一個適合我們使用案例的可擴展架構,有效服務數(shù)百萬客戶來自數(shù)千商家。SQi28資訊網(wǎng)——每日最新資訊28at.com

事件驅動架構解釋

事件驅動架構關注系統(tǒng)中事件的流動和處理。事件代表重要的事件或狀態(tài)變化,在不同組件之間通信的骨干。在事件驅動系統(tǒng)中,組件(如微服務或函數(shù))通過生成、檢測和消費事件進行異步通信。這種方法促進了松耦合,允許靈活性、可擴展性,并對動態(tài)變化作出響應。EDA特別適用于分布式系統(tǒng),在這些系統(tǒng)中,組件可以獨立操作,在無需直接同步交互的情況下實時對事件做出反應。SQi28資訊網(wǎng)——每日最新資訊28at.com

EDA的常見使用案例:SQi28資訊網(wǎng)——每日最新資訊28at.com

1.可擴展的異步處理,即工作器

SQi28資訊網(wǎng)——每日最新資訊28at.com

通過消息代理實現(xiàn)可擴展的異步處理SQi28資訊網(wǎng)——每日最新資訊28at.com

在任務數(shù)量龐大且具有異步處理靈活性的場景中,此配置極具擴展性。在服務A中,組件X生成消息,并將其發(fā)布到消息代理(即事件代理)。隨后,這些消息根據(jù)需要被許多消費者(稱為工作器)訂閱和處理。事件的來源可能包括cron作業(yè)、用戶交互和類似來源。SQi28資訊網(wǎng)——每日最新資訊28at.com

在傳統(tǒng)系統(tǒng)中,任務通常按順序處理,或者在支持的堆棧中通過多線程支持。然而,即使有多線程支持,只有垂直擴展是可行的選項。SQi28資訊網(wǎng)——每日最新資訊28at.com

2.消息隊列

SQi28資訊網(wǎng)——每日最新資訊28at.com

消息隊列SQi28資訊網(wǎng)——每日最新資訊28at.com

這是上述異步處理的一種變體,但是工作器現(xiàn)在位于另一個服務中。這使得服務B能夠在事件數(shù)量增加時無縫擴展。到達服務B的事件可能來自不同的服務。SQi28資訊網(wǎng)——每日最新資訊28at.com

這可用于由服務B負責同時處理大量小任務的體系結構,例如向移動設備提供大量推送通知或短信通知。SQi28資訊網(wǎng)——每日最新資訊28at.com

3.跨領域通信

這是EDA的更高級版本,系統(tǒng)的多個組件可能對同一消息感興趣,也可能不感興趣。因此,復雜性更多地在代理端,事件通過不同的綁定路由到不同的服務。SQi28資訊網(wǎng)——每日最新資訊28at.com

SQi28資訊網(wǎng)——每日最新資訊28at.com

跨領域通信SQi28資訊網(wǎng)——每日最新資訊28at.com

上圖展示了一個示例設置,其中服務A的事件通過不同的隊列路由到服務B和C。請注意,我在這里使用了RabbitMQ的術語:聯(lián)邦、交換和虛擬主機。但是,這個設置也可以使用其他消息代理來完成。SQi28資訊網(wǎng)——每日最新資訊28at.com

事件溯源與CQRS

在傳統(tǒng)的以數(shù)據(jù)庫為中心的方法中,我們通常存儲實體的當前狀態(tài)。相比之下,事件溯源將焦點從存儲應用程序的當前狀態(tài)轉移到捕獲并存儲對該狀態(tài)的更改的一系列不可變事件。這些事件表示系統(tǒng)中特定的事件或事務,并存儲在事件日志或事件存儲中。SQi28資訊網(wǎng)——每日最新資訊28at.com

1.關鍵概念

  • 事件: 表示系統(tǒng)中狀態(tài)更改的不可變記錄。事件捕獲發(fā)生了什么,而不是當前狀態(tài)。
  • 事件存儲: 專門的數(shù)據(jù)存儲,維護事件的時間順序序列。這允許通過重新播放事件輕松重建系統(tǒng)在任何時間點的狀態(tài)。
  • 聚合: 將相關事件分組的一致性單元。聚合負責執(zhí)行業(yè)務規(guī)則和維護數(shù)據(jù)完整性。

很多情況下,事件溯源與CQRS結合使用。這將讀模型(查詢模型)和寫模型(命令模型)分開,以實現(xiàn)關注點的分離。在此結合時,還有兩個事件溯源的重要概念:SQi28資訊網(wǎng)——每日最新資訊28at.com

2.讀模型

專門用于查詢和呈現(xiàn)數(shù)據(jù)的模型。它對讀取操作進行了優(yōu)化,并根據(jù)寫模型生成的事件構建。讀模型是去規(guī)范化的,并根據(jù)其服務的查詢需求定制。從相同的事件源,可以構建不同視圖的讀模型,為業(yè)務領域提供不同的視角。SQi28資訊網(wǎng)——每日最新資訊28at.com

3.映射

根據(jù)事件存儲中存儲的事件轉換和更新讀模型的過程。SQi28資訊網(wǎng)——每日最新資訊28at.com

SQi28資訊網(wǎng)——每日最新資訊28at.com

事件溯源與CQRSSQi28資訊網(wǎng)——每日最新資訊28at.com

在此設置中,事件被填充以記錄由業(yè)務流程引起的聚合的每個狀態(tài),并存儲在事件存儲中。隨后,投影從事件存儲中檢索這些事件,并開始將它們轉換為各種讀表。這些表可以以不同的視圖呈現(xiàn),為業(yè)務用戶提供不同的可視化效果。需要強調(diào)的是,盡管拉取事件是一種選擇,但投影還可以通過使用消息代理利用發(fā)布/訂閱模式,訂閱新事件。SQi28資訊網(wǎng)——每日最新資訊28at.com

這種設置通過捕獲事件的時間順序序列增強了系統(tǒng)的韌性,為全面的審計跟蹤提供了全面的記錄。因此,該方法允許進行有效的時間查詢,使應用程序在任何給定時間點都可以重建狀態(tài)。此外,它通過將數(shù)據(jù)模型變更與歷史事件日志分開,為業(yè)務需求的變化提供了靈活性。SQi28資訊網(wǎng)——每日最新資訊28at.com

結合CQRS,該機制促進了命令和查詢職責之間的松耦合,提供了韌性和靈活性。SQi28資訊網(wǎng)——每日最新資訊28at.com

將事件驅動架構和事件溯源結合

如上所述,EDA和ES都為可擴展性和協(xié)作提供了非常強大的方式。EDA強調(diào)通過事件松耦合通信的組件,而ES捕獲并持久化狀態(tài)變更的歷史記錄。因此,如果我們使用ES生成的事件并將其用于EDA,那將是一個自然的組合。SQi28資訊網(wǎng)——每日最新資訊28at.com

生成的事件不僅可以包含變更的狀態(tài),還可以包含變更的詳細信息。然后,這些事件可以通過消息代理傳輸?shù)搅硪粋€服務/組件,并在EDA中被消費。SQi28資訊網(wǎng)——每日最新資訊28at.com

SQi28資訊網(wǎng)——每日最新資訊28at.com

事件溯源和事件驅動設計的結合SQi28資訊網(wǎng)——每日最新資訊28at.com

上圖顯示了如何以一種非常直接的方式將ES和EDA結合起來。來自事件存儲的事件可以通過消息代理發(fā)布和被不同的服務和組件消費。SQi28資訊網(wǎng)——每日最新資訊28at.com

結合EDA和ES的優(yōu)勢

將事件驅動架構(EDA)與事件溯源(ES)結合帶來了顯著的優(yōu)勢。其中一個主要優(yōu)勢是系統(tǒng)的響應能力提升。這種設置允許系統(tǒng)快速適應實時變化,在動態(tài)環(huán)境中效率極高。SQi28資訊網(wǎng)——每日最新資訊28at.com

另一個關鍵優(yōu)勢是對狀態(tài)變更的全面歷史記錄,有助于詳細的歷史分析,并確保符合規(guī)范的強大審計跟蹤。此外,其不可變和可重播的特性使得實時分析、可擴展性和適應不斷變化的分析需求變得更加容易。事件還可以流式傳輸?shù)綌?shù)據(jù)分析流水線或復制到數(shù)據(jù)湖進行進一步處理。SQi28資訊網(wǎng)——每日最新資訊28at.com

此外,這種組合固有的靈活性和可擴展性也值得注意。系統(tǒng)可以輕松演變以滿足不斷增長的業(yè)務需求,確保長期的可持續(xù)性和適應性。SQi28資訊網(wǎng)——每日最新資訊28at.com

最后,系統(tǒng)的韌性也是一個值得關注的優(yōu)點。這種設置提供了強大的機制來恢復中斷,確保即使在具有挑戰(zhàn)性的情況下也能保持連續(xù)性和可靠性。SQi28資訊網(wǎng)——每日最新資訊28at.com

應對挑戰(zhàn)

將事件溯源(Event Sourcing)和事件驅動架構(EDA)相結合引入了一系列挑戰(zhàn),包括協(xié)調(diào)分布式系統(tǒng)、確保可擴展和高性能的事件存儲,以及管理模式演進。SQi28資訊網(wǎng)——每日最新資訊28at.com

  • 首先,在分布式環(huán)境中協(xié)調(diào)多個微服務的交互引入了一些復雜性,維護正確的事件順序和系統(tǒng)一致性變得復雜。需要精心設計事件流和協(xié)調(diào)機制,以防止出現(xiàn)事件重復或跨服務的亂序處理等問題。
  • 其次,事件存儲的可擴展性和性能是關鍵挑戰(zhàn)。事件溯源依賴于不可變事件,而事件驅動架構依賴于服務之間高效的事件通信。確保事件存儲基礎設施的耐久性和可靠性變得至關重要,特別是在事件在網(wǎng)絡中產(chǎn)生和消費的分布式環(huán)境中,這對于維持系統(tǒng)的響應能力尤為重要。
  • 第三,解決模式演進和版本控制至關重要。隨著系統(tǒng)的演變,與事件相關的數(shù)據(jù)模式可能會發(fā)生變化。在保持歷史事件完整性的同時平衡向后和向前兼容性是一項挑戰(zhàn)。實施有效的版本控制策略對于避免事件消費者可能根據(jù)不同模式版本處理事件的問題至關重要。要克服這些挑戰(zhàn),需要深思熟慮的設計和技術選擇,創(chuàng)建基于事件溯源和事件驅動架構的彈性和可擴展的架構。
  • 最后,但同樣重要的是,操作這種架構并不容易。監(jiān)控和管理結合了EDA和ES的系統(tǒng)需要新的運營實踐。確保在生產(chǎn)環(huán)境中系統(tǒng)的可用性、可靠性和性能可能具有挑戰(zhàn)性。操作消息代理也需要特定的專業(yè)知識。我們需要了解所使用的消息代理的優(yōu)缺點和最佳實踐。

最終思考

盡管存在這些挑戰(zhàn),將事件驅動架構和事件溯源相融合是一種強大的方法,當?shù)玫搅己霉芾頃r,它提供了一種動態(tài)且強大的架構。在設計和實施階段解決這些挑戰(zhàn)對于充分發(fā)揮這種組合架構策略的潛力至關重要。SQi28資訊網(wǎng)——每日最新資訊28at.com

本文鏈接:http://www.www897cc.com/showinfo-26-44399-0.html現(xiàn)代軟件架構:事件驅動設計遇上事件溯源

聲明:本網(wǎng)頁內(nèi)容旨在傳播知識,若有侵權等問題請及時與本網(wǎng)聯(lián)系,我們將在第一時間刪除處理。郵件:2376512515@qq.com

上一篇: Python中的Random模塊,隨機性的神奇世界

下一篇: 誰動了我的代碼——Long精度丟失

標簽:
  • 熱門焦點
  • 一加Ace2 Pro官宣:普及16G內(nèi)存 引領24G

    一加官方今天繼續(xù)為本月發(fā)布的新機一加Ace2 Pro帶來預熱,公布了內(nèi)存方面的信息。“淘汰 8GB ,12GB 起步,16GB 普及,24GB 引領,還有呢?#一加Ace2Pro#,2023 年 8 月,敬請期待。”同時
  • 5月iOS設備性能榜:M1 M2依舊是榜單前五

    和上個月一樣,沒有新品發(fā)布的iOS設備性能榜的上榜設備并沒有什么更替,僅僅只有跑分變化而產(chǎn)生的排名變動,剛剛開始的蘋果WWDC2023,推出的產(chǎn)品也依舊是新款Mac Pro、新款Mac Stu
  • 一年經(jīng)驗在二線城市面試后端的經(jīng)驗分享

    忠告這篇文章只適合2年內(nèi)工作經(jīng)驗、甚至沒有工作經(jīng)驗的朋友閱讀。如果你是2年以上工作經(jīng)驗,請果斷劃走,對你沒啥幫助~主人公這篇文章內(nèi)容來自 「升職加薪」星球星友 的投稿,坐
  • 從零到英雄:高并發(fā)與性能優(yōu)化的神奇之旅

    作者 | 波哥審校 | 重樓作為公司的架構師或者程序員,你是否曾經(jīng)為公司的系統(tǒng)在面對高并發(fā)和性能瓶頸時感到手足無措或者焦頭爛額呢?筆者在出道那會為此是吃盡了苦頭的,不過也得
  • 2天漲粉255萬,又一賽道在抖音爆火

    來源:運營研究社作者 | 張知白編輯 | 楊佩汶設計 | 晏談夢潔這個暑期,旅游賽道徹底火了:有的「地方」火了——貴州村超旅游收入 1 個月超過 12 億;有的「博主」火了&m
  • 微博大門常打開,迎接海外畫師漂洋東渡

    作者:互聯(lián)網(wǎng)那些事“起猛了,我能看得懂日語了”。“為什么日本人說話我能聽懂?”“中文不像中文,日語不像日語,但是我竟然看懂了”…&hell
  • 造車兩年股價跌六成,小米的估值邏輯變了嗎?

    如果從小米官宣造車后的首個交易日起持有小米集團的股票,那么截至2023年上半年最后一個交易日,投資者將浮虧59.16%,同區(qū)間的恒生科技指數(shù)跌幅為52.78%
  • 三星Galaxy Z Fold/Flip 5國行售價曝光 :最低7499元/12999元起

    據(jù)官方此前宣布,三星將于7月26日也就是明天在韓國首爾舉辦Unpacked活動,屆時將帶來帶來包括Galaxy Buds 3、Galaxy Watch 6、Galaxy Tab S9、Galaxy
  • Android 14發(fā)布:首批適配機型公布

    5月11日消息,谷歌在今天凌晨舉行了I/O大會,本次發(fā)布會谷歌帶來了自家的AI語言模型PaLM 2、谷歌Pixel Fold折疊屏、谷歌Pixel 7a手機,同時發(fā)布了Androi
Top 主站蜘蛛池模板: 武陟县| 睢宁县| 卓尼县| 金门县| 盐山县| 石河子市| 福安市| 榆中县| 科尔| 历史| 海安县| 宜黄县| 延津县| 海宁市| 濮阳市| 黄浦区| 丹东市| 祁连县| 勃利县| 社会| 兴文县| 巴彦淖尔市| 开封市| 福海县| 勃利县| 永定县| 贺州市| 阳城县| 平远县| 华池县| 清丰县| 莱阳市| 乌鲁木齐市| 邻水| 娄烦县| 于田县| 延长县| 玛纳斯县| 锦州市| 泽库县| 湘潭县|