DDD的核心思想封裝洲敢,從業(yè)務(wù)角度進(jìn)行領(lǐng)域的劃分漫玄、聚合的隔離,即業(yè)務(wù)的封裝沦疾,聚合是業(yè)務(wù)的最小單元称近,具有原子性特征,聚合之間與子領(lǐng)域之間一樣哮塞,通過(guò)協(xié)作方式(如刨秆,消息)來(lái)實(shí)現(xiàn)業(yè)務(wù),以此來(lái)實(shí)現(xiàn)高內(nèi)聚忆畅、低耦合的設(shè)計(jì)原則(P.S 只有業(yè)務(wù)內(nèi)聚才能實(shí)現(xiàn)真正的高內(nèi)聚)衡未。
封裝即是隔離,隔離與外部的交互家凯,好處當(dāng)然不言而喻——低耦合缓醋,使重構(gòu)變得安全、容易绊诲,隨時(shí)拆分為獨(dú)立服務(wù)送粱,等等。
利與弊總是并存的掂之。DDD的好處在于抗俄,很好的解決了業(yè)務(wù)人員與技術(shù)人員的溝通問(wèn)題和高內(nèi)聚低耦合的開(kāi)發(fā)和架構(gòu)演進(jìn)問(wèn)題;DDD的弊在于世舰,將數(shù)據(jù)不一致的影響面進(jìn)一步放大动雹,由微服務(wù)級(jí)別放大到微服務(wù)內(nèi)的聚合級(jí)別。
那么跟压,在DDD的落地過(guò)程中胰蝠,我們需要關(guān)注哪些問(wèn)題呢?
一震蒋、團(tuán)隊(duì)
首當(dāng)其沖的就是團(tuán)隊(duì)茸塞,團(tuán)隊(duì)的協(xié)作模式,在DDD中喷好,領(lǐng)域模型與語(yǔ)言是由團(tuán)隊(duì)(業(yè)務(wù)人員翔横、技術(shù)人員)一起建立的,它是一種環(huán)形協(xié)作模式梗搅,不再是鏈?zhǔn)絽f(xié)作模式禾唁。
二效览、開(kāi)發(fā)實(shí)現(xiàn)
1. 領(lǐng)域/業(yè)務(wù)邏輯的隔離與演進(jìn)
業(yè)務(wù)邏輯是核心,除了受到業(yè)務(wù)變化的影響外荡短,不應(yīng)受到任何其他的影響丐枉,如,存儲(chǔ)介質(zhì)掘托。
2. 聚合與領(lǐng)域事件的原子性
領(lǐng)域事件由聚合產(chǎn)生瘦锹,屬于聚合的一部分,落地時(shí)需確保聚合狀態(tài)的持久與領(lǐng)域事件發(fā)布的原子性闪盔,即弯院,都成功或都失敗,否則將導(dǎo)致數(shù)據(jù)一致性問(wèn)題泪掀。
3. 聚合之間的數(shù)據(jù)一致性
聚合是原子性的听绳,聚合之間是最終一致性,除了達(dá)到數(shù)據(jù)一致性外异赫,數(shù)據(jù)一致性的時(shí)間窗口也非常重要椅挣。
4. 聚合的持久
聚合的持久與聚合的結(jié)構(gòu)無(wú)關(guān),即塔拳,可根據(jù)查詢(xún)性能等需要進(jìn)行任意結(jié)構(gòu)的存儲(chǔ)鼠证。
5. 聚合的并發(fā)問(wèn)題
同一時(shí)刻對(duì)同一聚合的修改,需確保聚合的數(shù)據(jù)安全性靠抑。