?
專注于為中小企業(yè)提供網(wǎng)站制作、做網(wǎng)站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)民樂免費做網(wǎng)站提供優(yōu)質(zhì)的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了近1000家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉(zhuǎn)變。
本周MASA Framework 進行了第四次課程直播,課程主題為類目管理的開發(fā),直播中進行了理論講解和實戰(zhàn)演練(CQRS實踐的演示可直達推文底部觀看直播回放)
開始環(huán)節(jié)我們圍繞三個點介紹CQRS的原理
首先,我們先對之前的事件流概念進行簡單的回顧
接下來到我們本節(jié)課的主題內(nèi)容
命令查詢職責分離
大白話:讀和寫分開
信息來源:https://docs.microsoft.com/zh-cn/azure/architecture/patterns/cqrs
1.獨立縮放
2.根據(jù)讀寫分別優(yōu)化數(shù)據(jù)結(jié)構(gòu)3.更輕松地確保僅正確的域?qū)嶓w對數(shù)據(jù)執(zhí)行寫入4.關(guān)注點分離,讀關(guān)注讀取性能,寫關(guān)注復雜業(yè)務邏輯5.物化視圖的讀模型可有效減少復雜的表鏈接
1.源于訪問頻次、數(shù)據(jù)量或者是數(shù)據(jù)模型數(shù)量等因素導致查詢和更新的需求差距逐漸變大
2.最大限度地提高性能
3.控制細粒度的縮放
4.控制不同應用的安全級別
5.降低多開發(fā)者協(xié)作沖突,事件的粒度可以足夠細
1.命令應基于任務,而不是數(shù)據(jù)
2.命令可入隊,使用異步而非同步
3.查詢不包含修改動作和領域知識
4.事件溯源支持重播,比如用于通知讀模型
只追加存儲來記錄對數(shù)據(jù)采取的完整系列操作
而不是僅存儲域中數(shù)據(jù)的當前狀態(tài)
1.事件不可變
2.事件有助于領域?qū)<伊私膺^程
3.事件只增不改,不需要考慮并發(fā)沖突
4.事件存儲有助于監(jiān)控數(shù)據(jù)變化
5.事件重播可輕易的對系統(tǒng)狀態(tài)進行還原,調(diào)試,測試
6.事件可被不同的應用多次,異步消費
1.事件驅(qū)動是異步的,讀模型會有一定程度的延遲
2.修改事件的唯一方式只能通過補償事件
3.事件順序至關(guān)重要,事件存儲有責任保證事件順序完整性
不管是上面講到的CQRS,還是事件溯源,這些都是為事件驅(qū)動做準備
事件驅(qū)動里有一些值得注意的點
事件不等于 命令
1事件不會告訴訂閱者如何做
2.事件只通知某個事件發(fā)生了
3.事件是不可變的
4.事件被執(zhí)行時,可能會產(chǎn)生新的事件并形成事件流
事件標準化
支持過濾/轉(zhuǎn)換/查詢等
事件其實是需要標準化的,那有沒有標準呢?
那就是CloudEvents
包含了事件發(fā)生的上下文和相關(guān)數(shù)據(jù),事件代表了已發(fā)生的事實,不包含任何目的地相關(guān)信息。消息能夠傳達事件內(nèi)容,從而將事件數(shù)據(jù)從源頭傳輸?shù)街付ǖ哪康牡?/p>
1.發(fā)送的消息符合規(guī)范,那么它就是一個有效的 CloudEvent
2.支持的云廠商包括微軟,谷歌,阿里,甲骨文等
那我們來看事件和訂閱者的關(guān)系,事件和訂閱者可以是一對多、一對一、多對一,但事實上事件和訂閱者的關(guān)系是多對多
微服務解耦,跨集群通信
兼顧遺留,系統(tǒng)對接
游走在云與非云中
部分 AOP類場景
流計算
簡單來說,Event Bus主要的功能是接收消息、處理消息、轉(zhuǎn)發(fā)消息,作為發(fā)布者和訂閱者中轉(zhuǎn)站的角色
發(fā)布者通過調(diào)度中心將消息發(fā)送給訂閱者。調(diào)度中心解決發(fā)布與訂閱者之間的關(guān)系,保證消息可以送達訂閱者手中
最常見的是并行執(zhí)行和順序執(zhí)行
?
MASA 是如何進行事件處理的?
MASA 事件處理主要分為兩部分一個是MASA Dispatcher,另一個是MASA DDD
?
?
MASA Dispatcher>>
Event Bus>>進程內(nèi)事件總線
Integration Event Bus>>集成事件總線(跨進程)
MASA DDD>>Domain Event Bus>>領域事件總線 (自動協(xié)調(diào)進程內(nèi)事件和集成事件調(diào)度)
通過前面的學習,我們已經(jīng)了解了Event Bus 和MASA 事件處理流程,那MASAEvent Bus 是怎么樣的一個事件流程?
?
發(fā)布者把事件發(fā)布到Even Bus
▼
關(guān)系鏈表支持特性Handler中間件分布式事務UoW更多...
▼
發(fā)送到訂閱者
本次課程內(nèi)容到這里就全部結(jié)束,CQRS實戰(zhàn)演示部分可以點擊下方鏈接,觀看直播回放。
.NET現(xiàn)代化應用開發(fā) - CQRS&類目管理代碼剖析_嗶哩嗶哩_bilibili
如果你對我們MASA感興趣,無論是代碼貢獻、使用、提 Issue,歡迎聯(lián)系我們
?
網(wǎng)站欄目:.NET現(xiàn)代化應用開發(fā)
本文地址:http://chinadenli.net/article16/dsoidgg.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站維護、品牌網(wǎng)站設計、云服務器、網(wǎng)站導航、企業(yè)建站、關(guān)鍵詞優(yōu)化
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)