国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
對CQRS架構(gòu)的幾點疑問
在看到CQRS架構(gòu)之后覺得很有道理,但是有以下幾點疑問

1.CQRS架構(gòu)圖中的在發(fā)生一個Command之后肯定會有一個Command Handle來做處理,并且Command這是滿足并針對自身的,但是后面又看到了Command Handle來調(diào)用Domain,并且Domain在調(diào)用Repository,疑問就出現(xiàn)在這里了,為什么Handle要去調(diào)用Domain,還有就是Repository是否要注入到Domain中,還是說可以使用Event來調(diào)用Repository.

2.看CQRS架構(gòu)中出現(xiàn)了Snapeshot和Event Store,疑問是SnapeShot跟Event Store之間是否有關(guān)系存在,還有就是SnapeShot跟Event Store兩者區(qū)別在那里.

3.Banq老師說到了EJB推崇貧血模式,在CQRS架構(gòu)在集群中是使用事件來做傳遞的,但是事件是有事件源的,事件在傳遞的過程中事件源不需要做傳遞么.還是將事件源存儲在某個中心服務(wù)器上面.

4.Banq老師說道ActiveRecord的致命缺陷是:當(dāng)業(yè)務(wù)邏輯復(fù)雜到一定程度,它開始崩潰,業(yè)務(wù)邏輯很難維護,一致性保證很困難,更進一步說:實際上是關(guān)系數(shù)據(jù)庫掌管了業(yè)務(wù)狀態(tài),關(guān)系數(shù)據(jù)庫成為單點風(fēng)險和性能瓶頸,只能走數(shù)據(jù)庫sharding 等路線進行伸縮(本站有更多關(guān)于關(guān)系數(shù)據(jù)庫問題的文章),這里業(yè)務(wù)邏輯復(fù)雜之后會很難維護本人不是很明白上述幾點問題,還請舉例說明.

對于以上幾點問題還請大家詳細(xì)說明,謝謝!

---------------------------------------------------------------

1,Commond到達(dá)它被處理的Handler,這通常是一對一,然后會觸發(fā)領(lǐng)域模型的交互,因為業(yè)務(wù)邏輯在Domain上,Domain的行為會生成領(lǐng)域事件,Domain沒有直接掉Repository,注意那張圖,Domain由Repoisitoy返回,Domain上的事件可能由Reposiotry發(fā)到事件總線。

2,Snapeshot是模型的快照,Event Store是存儲在Domain上的事件,舉個例子,一個人從出生就開始記錄在它身上發(fā)生的任何事情,然后讓他再出生的一次,同時把Event Store里事件回放一下就可以還原到它的現(xiàn)在。可想而知,這個事件太多了,那么就在某個時候保存一個快照,比如在他18歲的時候,這樣就可以從18歲開始回放。

3,這個看你怎么設(shè)計,可以直接帶事件源對象或者帶ID,因為我們通常處理的是實體對象,用ID去Repository里取就可以了。Jdon框架帶的只是一個Object,隨便你放什么。

4,活動記錄,和關(guān)系數(shù)據(jù)庫綁得太死,那么問題就是關(guān)系數(shù)據(jù)庫的問題,多搜索一下。

希望對你幫助!
[該貼被OOjdon于2010-12-18 19:57修改過]

----------------------------------------------------------------

首先很感謝你的回答,確實幫助了我很多,但是還有有幾個問題

1.Handle主要做什么,還有Handle來驅(qū)動Domain觸發(fā)事件么

2.SnapeShot是模型的一個快照,我可以把它看做是一個帶有時間標(biāo)識的緩存么,而Event Store是存儲歷次狀態(tài)事件的存儲點,由SnapeShot返回某個時間點的模型標(biāo)識(ModelId),在到Event Store去取出跟此次狀態(tài)有關(guān)的事件么

3.CQRS架構(gòu)的讀寫分離,本人不是很明白讀如何進行分離,是否需要針對查詢來做專類的對象。但是如果使用查詢專類對象的話,那么Domain對查詢專類對象有用處,因為兩者還是有所區(qū)分的

----------------------------------------------------------------

1,Handler就是接受到命令然后讓領(lǐng)域模型做事情,這個Handler我認(rèn)為在某些時候還可以省略,在JiveJdon中有直接把命令打到Domain上的代碼,領(lǐng)域模型在完成業(yè)務(wù)邏輯的時候會產(chǎn)生事件,比如貨物到達(dá)目的地會有deliver事件,商品有上架事件或被買走事件,領(lǐng)域事件由領(lǐng)域模型扔出來的,當(dāng)然系統(tǒng)中還有各色各樣的事件。

2,事件回放產(chǎn)生完整Domain,DDD Factory也可以產(chǎn)生完整Domain,有完整Domain才會有緩存,至于怎么得到這個完整Domain,你可以事先直接把對象序列化,或者從數(shù)據(jù)庫中構(gòu)造。
2010年12月18日 22:06 "spawnyy"的言論
由SnapeShot返回某個時間點的模型標(biāo)識(ModelId) ...
注意,對象標(biāo)識是不變的,和時間沒有關(guān)系。

3,想象沒有數(shù)據(jù)庫,數(shù)據(jù)是領(lǐng)域?qū)ο蠼换ネ瓿蓸I(yè)務(wù)邏輯時的產(chǎn)物,這個產(chǎn)物被異步到一個sql或者NoSQL DB保存,然后有人直接來這個DB查詢,你怎么查,怎么優(yōu)化,怎么加視圖,加緩存,怎么做DTO,怎么Match你的UI,是你的事,Domain已經(jīng)分析和開發(fā)完成,這就是讀寫分離。

這是我對CQRS的理解,大家一起討論吧。


[該貼被OOjdon于2010-12-19 11:10修改過]
[該貼被OOjdon于2010-12-19 11:13修改過]

----------------------------------------------------------------
我個人感覺也沒什么必要增加Handle,這里的Command就是命令只要發(fā)送到Domain受理就可以了,但是可能我理解的SnapeShot有點問題,這個快照是一個模型近期的快照呢,還是歷次的回放?還有就是Event Store每次存儲事件的時候可以把它看做是一個存儲器吧,不過存儲的方式是存儲事件呢還是事件源呢。對于讀寫分離,如何讀這塊需要根據(jù)自己需要去設(shè)計,而不是將Domain去為查詢?nèi)プ鲂┩讌f(xié)的事情,對么?
[該貼被spawnyy于2010-12-19 11:47修改過]

----------------------------------------------------------------

Handler可以做權(quán)限等事情,所以是有必要的,保持Domain層的足夠內(nèi)聚,DDD書中也還有應(yīng)用層到領(lǐng)域?qū)幽兀?br>Domain對象可能就是一個不Match UI 和 DB的東西,我們現(xiàn)在不過是向兩邊妥協(xié)了,所以有Action幾千行,Service幾千行的代碼
Hibernate in Action書中的案例代碼,DDD sample 使用SSH的方式都不是這樣的。
對于cqrs,你可以研究下axon這個框架。該框架實現(xiàn)的快照是可配置的,做法是直接將對象序列化,比如配置你18歲,22歲序列,然后就不用回放你18歲之前,22歲之前。
[該貼被OOjdon于2010-12-19 12:16修改過]

---------------------------------------------------------------

2010年12月18日 19:45 "oojdon"的言論
Commond到達(dá)它被處理的Handler,這通常是一對一,然后會觸發(fā)領(lǐng)域模型的交互 ...

    其實,這是我認(rèn)為DDD中領(lǐng)域事件的局限性。在我看來,一個Commond可能會有多個handler,甚至還會有多個handler的編排,就像ESB里做的一樣。在復(fù)雜的業(yè)務(wù)場景里,一個對象的創(chuàng)建常常會導(dǎo)致多個對象的狀態(tài)發(fā)生變化,這還不包括倉儲層的響應(yīng)。
本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
軟件各種系統(tǒng)架構(gòu)圖(二)
CQRS(命令查詢職責(zé)分離)和 EDA(事件驅(qū)動架構(gòu))
CQRS架構(gòu)如何實現(xiàn)高性能
DDD CQRS架構(gòu)和傳統(tǒng)架構(gòu)的優(yōu)缺點比較
微服務(wù)架構(gòu)下的分布式數(shù)據(jù)管理
6種常用的架構(gòu)設(shè)計模式(上)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服