對(duì)DDD和中臺(tái)關(guān)系的簡(jiǎn)單認(rèn)識(shí)

一.先弄清楚業(yè)務(wù)流程,捋清業(yè)務(wù)界限然后才能進(jìn)行技術(shù)設(shè)計(jì)

捋清楚業(yè)務(wù)界限和方向,再進(jìn)行微服務(wù)的劃分,數(shù)據(jù)模型(業(yè)務(wù)信息主體)的確定,然后在業(yè)務(wù)實(shí)現(xiàn)和不同業(yè)務(wù)交互的過(guò)程中再引入隊(duì)列、緩存、搜索、數(shù)據(jù)庫(kù)等技術(shù),然后再基礎(chǔ)設(shè)施建設(shè)監(jiān)控、安全

對(duì)于水平層面結(jié)構(gòu)的劃分,應(yīng)該根據(jù)系統(tǒng)規(guī)模的需求

參考到家設(shè)計(jì)

重點(diǎn)看看極客時(shí)間 怎樣設(shè)計(jì)聚合

有效降低層與層之間的依賴

二.基本的水平結(jié)構(gòu):

web層(包括前端)、應(yīng)用層(跨領(lǐng)域服務(wù))、領(lǐng)域?qū)樱ㄊ蔷酆蟽?nèi)容,跨實(shí)體)、數(shù)據(jù)層

三、DDD中的實(shí)體對(duì)象和值對(duì)象

實(shí)體對(duì)象:有唯一標(biāo)識(shí)的對(duì)象,擁有id,其他屬性變了id不變?nèi)阅艽_定是這個(gè)對(duì)象

值對(duì)象:沒(méi)有唯一標(biāo)識(shí),一旦屬性發(fā)生變化表示的就是另外一個(gè)對(duì)象,單個(gè)的值,字典

判斷是不是同一個(gè)對(duì)象的依據(jù)

實(shí)體對(duì)象:id; 值對(duì)象:值

DDD 引入值對(duì)象是希望實(shí)現(xiàn)從“數(shù)據(jù)建模為中心”向“領(lǐng)域建模為中心”轉(zhuǎn)變,減少數(shù)據(jù)庫(kù)表的數(shù)量和表與表之間復(fù)雜的依賴關(guān)系,盡可能地簡(jiǎn)化數(shù)據(jù)庫(kù)設(shè)計(jì),提升數(shù)據(jù)庫(kù)性能。在整個(gè)系統(tǒng)中二者根據(jù)具體的業(yè)務(wù)需求來(lái)確定,可以同時(shí)采用

將數(shù)據(jù)主體設(shè)置成值對(duì)象還是實(shí)體對(duì)象,主要看這個(gè)對(duì)象是當(dāng)做主體來(lái)用還是當(dāng)做字典來(lái)用,像同樣是地址,當(dāng)做為“收貨地址”來(lái)用 可以設(shè)置成值對(duì)象,當(dāng)做為“商圈”來(lái)用 可以做成實(shí)體對(duì)象 一個(gè)城市就有五個(gè)商圈 商圈是一個(gè)主體

跨實(shí)體的業(yè)務(wù)通過(guò)領(lǐng)域服務(wù)來(lái)實(shí)現(xiàn)(領(lǐng)域?qū)樱瑢I(yè)務(wù)需要的實(shí)體聚合到一起也可以稱為聚合服務(wù)這個(gè)過(guò)程堅(jiān)持“高內(nèi)聚,低耦合”,跨多個(gè)聚合的服務(wù)通過(guò)應(yīng)用層來(lái)實(shí)現(xiàn)

三、微服務(wù)解耦的關(guān)鍵:異步

領(lǐng)域事件需要數(shù)據(jù)交互 可以通過(guò)分布式事務(wù)和隊(duì)列兩種方式

微服務(wù)內(nèi)部可以采用分布式事務(wù)

微服務(wù)之間可以采用 異步 消息隊(duì)列

四、降低層與層之間的依賴

定義好聚合之間的界限,降低層與層之間的耦合

跨聚合應(yīng)該是應(yīng)用層

每一層只能與其下方的一層發(fā)生耦合

微服務(wù)存在重組和拆分:

微服務(wù)之間有拆分和重組,微服務(wù)內(nèi)部也有拆分和重組

拆分:

1.某個(gè)聚合經(jīng)常被高頻訪問(wèn),可以考慮拆分為獨(dú)立的服務(wù)(new-cpassport)

2.像服務(wù)1中的聚合b,隨著業(yè)務(wù)的發(fā)展可以放到服務(wù)2中去

重組:

1.比如領(lǐng)域服務(wù)a、b、c,隨著系統(tǒng)外部接入的越來(lái)越多,發(fā)現(xiàn)b和c服務(wù)同時(shí)多次被一個(gè)應(yīng)用服務(wù)調(diào)用了,執(zhí)行順序也基本一致,可以考慮將b和c服務(wù)合并,再將應(yīng)用服務(wù)中b和c的功能下沉到領(lǐng)域?qū)?,演進(jìn)成新的領(lǐng)域服務(wù)(b+c)。

四.中臺(tái)建設(shè)

中臺(tái)概念的形成是企業(yè)將原來(lái)分散的系統(tǒng)想要形成一個(gè)閉環(huán)生態(tài),生態(tài)需要共有的數(shù)據(jù)將各系統(tǒng)鏈接起來(lái),這樣產(chǎn)生了公共的數(shù)據(jù)和公共的業(yè)務(wù),將這些公共的內(nèi)容向下沉淀抽取形成了中臺(tái),中臺(tái)本身的定義就是“企業(yè)級(jí)能力的復(fù)用平臺(tái)”,在形成中臺(tái)的過(guò)程中有兩個(gè)方向,通用中臺(tái)(偏向工具)、核心中臺(tái)(偏向企業(yè)的核心數(shù)據(jù))。

1.中臺(tái)是不是僅僅是個(gè)Dao層?

(1).數(shù)據(jù)中臺(tái)是領(lǐng)域服務(wù)的一種體現(xiàn)

(2).并不是簡(jiǎn)單的提供對(duì)單表數(shù)據(jù)的增刪改查,需要體現(xiàn)聚合的概念,像創(chuàng)建某個(gè)業(yè)務(wù)數(shù)據(jù)時(shí),需要將這個(gè)業(yè)務(wù)的所有數(shù)據(jù)作為參數(shù)傳入中臺(tái)服務(wù)接口,由中臺(tái)服務(wù)分發(fā)各個(gè)數(shù)據(jù)到對(duì)應(yīng)的表中;當(dāng)查詢時(shí)只需提供一個(gè)聚合根也就是業(yè)務(wù)id,由中臺(tái)服務(wù)組裝所有表的數(shù)據(jù)然后返給調(diào)用方

(3).如果業(yè)務(wù)方一個(gè)服務(wù)需要同時(shí)調(diào)用中臺(tái)多個(gè)服務(wù),這時(shí)可以提供一個(gè)適配層服務(wù),對(duì)外只是一個(gè)接口,由適配層來(lái)調(diào)用多個(gè)中臺(tái)服務(wù)完成業(yè)務(wù)流程

? 以上能保證核心的數(shù)據(jù)和核心的業(yè)務(wù)在中臺(tái),也實(shí)現(xiàn)中臺(tái)的模塊化,提高了與業(yè)務(wù)系統(tǒng)的解耦

2.中臺(tái)拆分的考慮

? 中臺(tái)也分核心中臺(tái)和通用中臺(tái),核心中臺(tái)是核心的競(jìng)爭(zhēng)力核心的數(shù)據(jù),通用中臺(tái)是通用的功能

? 在拆分的時(shí)候考慮 元素單元:是否是同一個(gè)業(yè)務(wù)內(nèi)的數(shù)據(jù)

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 數(shù)據(jù)特征:像登錄,name 、password、賬號(hào)(訪問(wèn)高、不輕易變動(dòng)的數(shù)據(jù))是一個(gè)表,,登錄次數(shù),時(shí)間,記錄(訪問(wèn)量不高,變化多)的數(shù)據(jù)是一個(gè)表,,,這樣能防止鎖表鎖行,提高執(zhí)行效率

《企業(yè)IT架構(gòu)轉(zhuǎn)型之道:阿里巴巴中臺(tái)戰(zhàn)略轉(zhuǎn)型思想和實(shí)戰(zhàn)》

3.中臺(tái)的作用

(1)進(jìn)行數(shù)據(jù)和功能的復(fù)用,防止重復(fù)性開(kāi)發(fā),簡(jiǎn)化上層代碼,同時(shí)也單獨(dú)維護(hù)了通用業(yè)務(wù)邏輯和核心的數(shù)據(jù)

(2)對(duì)于家政來(lái)說(shuō),現(xiàn)在的中臺(tái)功能(商家中心,支付中心,訂單中心)非常完備,如果出現(xiàn)了一個(gè)新的家政類型(不是保潔、保姆、月嫂),這時(shí)候只需要開(kāi)發(fā)上層業(yè)務(wù)場(chǎng)景代碼就能直接實(shí)現(xiàn)這個(gè)功能,不需要底層開(kāi)發(fā)

五、DDD設(shè)計(jì)案例

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 摘要:本文中,我們將進(jìn)一步理解微服務(wù)架構(gòu)的核心要點(diǎn)和實(shí)現(xiàn)原理,為讀者的實(shí)踐提供微服務(wù)的設(shè)計(jì)模式,以期讓微服務(wù)在讀者...
    Java架構(gòu)師Carl閱讀 6,396評(píng)論 0 20
  • 我曾經(jīng)在《鏡像神經(jīng)元》的文章中提到過(guò)環(huán)境對(duì)于人的影響,提到過(guò)孟母三遷的故事,提到了為什么要上一個(gè)好學(xué)校。讀了珍妮·...
    溫暖的牛奶咖啡閱讀 443評(píng)論 0 1
  • 女生 姓:自己姓的第一個(gè)字母 A:慕容B:任C:于D:厲F:鐘離G:唐H:東方J:敖K:白L:南宮M:竺N:司徒O...
    BT陳小川閱讀 1,173評(píng)論 2 1
  • 小鎮(zhèn),提到這兩個(gè)字,最先想到的是大把的陽(yáng)光和悠然的美景。 它不止一種面貌,甚至在它平靜的外表下隨時(shí)有波濤洶涌。 有...
    生活故事錄閱讀 863評(píng)論 0 0
  • 背景: 集團(tuán)要求kibana必須要有密碼驗(yàn)證,但是kibana本身并沒(méi)有驗(yàn)證功能,實(shí)現(xiàn)需要用xpack,然而xpa...
    sniperD閱讀 159評(píng)論 0 0

友情鏈接更多精彩內(nèi)容