最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊

.NET現(xiàn)代化應(yīng)用開發(fā) - CQRS&類目管理代碼剖析

2022-10-10 14:28 作者:MASA技術(shù)團(tuán)隊(duì)  | 我要投稿

上周MASA Framework 進(jìn)行了第四次課程直播,課程主題為類目管理的開發(fā),直播中進(jìn)行了理論講解和實(shí)戰(zhàn)演練(CQRS實(shí)踐的演示可直達(dá)推文底部觀看直播回放)

開始環(huán)節(jié)我們圍繞三個(gè)點(diǎn)介紹CQRS的原理

首先,我們先對(duì)之前的事件流概念進(jìn)行簡單的回顧

事件風(fēng)暴回顧 - 事件流

接下來到我們本節(jié)課的主題內(nèi)容

CQRS

命令查詢職責(zé)分離

大白話:讀和寫分開

信息來源:https://docs.microsoft.com/zh-cn/azure/architecture/patterns/cqrs

優(yōu)勢

  1. 獨(dú)立縮放

  2. 根據(jù)讀寫分別優(yōu)化數(shù)據(jù)結(jié)構(gòu)

  3. 更輕松地確保僅正確的域?qū)嶓w對(duì)數(shù)據(jù)執(zhí)行寫入

  4. 關(guān)注點(diǎn)分離,讀關(guān)注讀取性能,寫關(guān)注復(fù)雜業(yè)務(wù)邏輯

  5. 物化視圖的讀模型可有效減少復(fù)雜的表鏈接

什么時(shí)候用

  1. 源于訪問頻次、數(shù)據(jù)量或者是數(shù)據(jù)模型數(shù)量等因素導(dǎo)致查詢和更新的需求差距逐漸變大

  2. 最大限度地提高性能

  3. 控制細(xì)粒度的縮放

  4. 控制不同應(yīng)用的安全級(jí)別

  5. 降低多開發(fā)者協(xié)作沖突,事件的粒度可以足夠細(xì)

注意

  1. 命令應(yīng)基于任務(wù),而不是數(shù)據(jù)

  2. 命令可入隊(duì),使用異步而非同步

  3. 查詢不包含修改動(dòng)作和領(lǐng)域知識(shí)?

  4. 事件溯源支持重播,比如用于通知讀模型

事件溯源

只追加存儲(chǔ)來記錄對(duì)數(shù)據(jù)采取的完整系列操作

而不是僅存儲(chǔ)域中數(shù)據(jù)的當(dāng)前狀態(tài)

優(yōu)勢

  1. 事件不可變

  2. 事件有助于領(lǐng)域?qū)<伊私膺^程

  3. 事件只增不改,不需要考慮并發(fā)沖突

  4. 事件存儲(chǔ)有助于監(jiān)控?cái)?shù)據(jù)變化

  5. 事件重播可輕易的對(duì)系統(tǒng)狀態(tài)進(jìn)行還原,調(diào)試,測試

  6. 事件可被不同的應(yīng)用多次,異步消費(fèi)

注意

  1. 事件驅(qū)動(dòng)是異步的,讀模型會(huì)有一定程度的延遲

  2. 修改事件的唯一方式只能通過補(bǔ)償事件

  3. 事件順序至關(guān)重要,事件存儲(chǔ)有責(zé)任保證事件順序完整性

不管是上面講到的CQRS,還是事件溯源,這些都是為事件驅(qū)動(dòng)做準(zhǔn)備

??

事件驅(qū)動(dòng)的小知識(shí)點(diǎn)

事件驅(qū)動(dòng)里有一些值得注意的點(diǎn)

事件不等于命令


1事件不會(huì)告訴訂閱者如何做

2.事件只通知某個(gè)事件發(fā)生了

3.事件是不可變的

4.事件被執(zhí)行時(shí),可能會(huì)產(chǎn)生新的事件并形成事件流


事件標(biāo)準(zhǔn)化


支持過濾/轉(zhuǎn)換/查詢等

事件其實(shí)是需要標(biāo)準(zhǔn)化的,那有沒有標(biāo)準(zhǔn)呢?

那就是CloudEvents

CloudEvents

包含了事件發(fā)生的上下文和相關(guān)數(shù)據(jù),事件代表了已發(fā)生的事實(shí),不包含任何目的地相關(guān)信息。消息能夠傳達(dá)事件內(nèi)容,從而將事件數(shù)據(jù)從源頭傳輸?shù)街付ǖ哪康牡?/p>

1.發(fā)送的消息符合規(guī)范,那么它就是一個(gè)有效的 CloudEvent

2.支持的云廠商包括微軟,谷歌,阿里,甲骨文等

那我們來看事件和訂閱者的關(guān)系,事件和訂閱者可以是一對(duì)多、一對(duì)一、多對(duì)一,但事實(shí)上事件和訂閱者的關(guān)系是多對(duì)多

事件驅(qū)動(dòng)的使用場景

微服務(wù)解耦,跨集群通信

兼顧遺留,系統(tǒng)對(duì)接

游走在云與非云中

部分 AOP類場景

流計(jì)算

Event Bus

簡單來說,Event Bus主要的功能是接收消息、處理消息、轉(zhuǎn)發(fā)消息,作為發(fā)布者和訂閱者中轉(zhuǎn)站的角色

發(fā)布訂閱模式

發(fā)布者通過調(diào)度中心將消息發(fā)送給訂閱者。調(diào)度中心解決發(fā)布與訂閱者之間的關(guān)系,保證消息可以送達(dá)訂閱者手中

最常見的是并行執(zhí)行和順序執(zhí)行


MASA 事件處理

MASA 是如何進(jìn)行事件處理的?

MASA 事件處理主要分為兩部分一個(gè)是MASA Dispatcher,另一個(gè)是MASA DDD



MASA Dispatcher>>

Event Bus>>進(jìn)程內(nèi)事件總線

Integration Event Bus>>集成事件總線(跨進(jìn)程)

MASA DDD>>Domain Event Bus>>領(lǐng)域事件總線?(自動(dòng)協(xié)調(diào)進(jìn)程內(nèi)事件和集成事件調(diào)度)

通過前面的學(xué)習(xí),我們已經(jīng)了解了Event Bus 和MASA 事件處理流程,那MASA?Event Bus 是怎么樣的一個(gè)事件流程?

MASA Event Bus


發(fā)布者把事件發(fā)布到Even Bus

關(guān)系鏈表支持特性Handler中間件分布式事務(wù)UoW更多...

發(fā)送到訂閱者

本次課程內(nèi)容到這里就全部結(jié)束,CQRS實(shí)戰(zhàn)演示部分可以點(diǎn)擊下方鏈接,觀看直播回放。

.NET現(xiàn)代化應(yīng)用開發(fā) - CQRS&類目管理代碼剖析



如果你對(duì)我們MASA感興趣,無論是代碼貢獻(xiàn)、使用、提 Issue,歡迎聯(lián)系我們

  • WeChat:MasaStackTechOps

  • QQ:7424099


.NET現(xiàn)代化應(yīng)用開發(fā) - CQRS&類目管理代碼剖析的評(píng)論 (共 條)

分享到微博請遵守國家法律
长垣县| 白朗县| 寿光市| 景泰县| 江油市| 徐州市| 晋江市| 宁城县| 祁门县| 渝中区| 安化县| 维西| 靖边县| 扶绥县| 鱼台县| 深水埗区| 大渡口区| 五河县| 华池县| 胶州市| 霸州市| 增城市| 长海县| 湖口县| 留坝县| 宁波市| 仁布县| 普兰店市| 赤壁市| 博客| 栾川县| 白银市| 察哈| 肇源县| 驻马店市| 德令哈市| 永和县| 岑溪市| 宜君县| 阿合奇县| 乌拉特后旗|