九九热精品免费观看-九九热国产视频-九九免费精品视频-九九免费高清在线观看视频-午夜精品国产自在现线拍-午夜家庭影院

業(yè)務(wù)中臺(tái)構(gòu)建-服務(wù)識(shí)別

SOA團(tuán)隊(duì) 2020-03-16

對(duì)于中臺(tái)構(gòu)建,實(shí)際上兩個(gè)關(guān)鍵點(diǎn),第一個(gè)是劃分微服務(wù)模塊粒度,第二個(gè)就是在模塊劃分清楚后確定服務(wù)識(shí)別和定義的粒度。在服務(wù)識(shí)別和定義前,可以先參考本文檔【3.2.2.2 Http Rest接口設(shè)計(jì)】這篇文章。

在上篇談中臺(tái)構(gòu)建模塊劃分的時(shí)候,強(qiáng)調(diào)了一個(gè)關(guān)鍵點(diǎn),就是盡可能以數(shù)據(jù)的維度來(lái)進(jìn)行模塊拆分,數(shù)據(jù)包括了基礎(chǔ)主數(shù)據(jù)和核心共享數(shù)據(jù),在數(shù)據(jù)驅(qū)動(dòng)下拆分模塊,那么模塊底層對(duì)應(yīng)的數(shù)據(jù)庫(kù)如何拆分基本也就清楚了。一定要知道,微服務(wù)架構(gòu)下,我們底層數(shù)據(jù)庫(kù)也是拆分了的。

底層數(shù)據(jù)庫(kù)沒(méi)有拆分,但是仍然用SpringCloud框架開(kāi)發(fā),可以拆分為多個(gè)JAR包,在這種模式下只能認(rèn)為是一個(gè)微服務(wù)模塊,而不是獨(dú)立,因?yàn)槠洳淮嬖讵?dú)立自治能力。我們看到很多上層開(kāi)發(fā)采用SpringCloud框架,但是數(shù)據(jù)庫(kù)仍然采用一個(gè)數(shù)據(jù)庫(kù)的情況,再次說(shuō)明,對(duì)于這種架構(gòu)設(shè)計(jì),不是標(biāo)準(zhǔn)意義上的微服務(wù)架構(gòu),沒(méi)有做到徹底解耦。

面向資源,面向?qū)ο蠛皖I(lǐng)域驅(qū)動(dòng)設(shè)計(jì)

對(duì)于Http Rest接口說(shuō)的最多的就是面向資源的設(shè)計(jì),對(duì)于資源有標(biāo)準(zhǔn)的Http Put,Post,Delte,Get等操作。因此你需要定義好相應(yīng)的資源。資源可以放在計(jì)算機(jī)上并體現(xiàn)為比特流的事物,可以是結(jié)構(gòu)化的數(shù)據(jù)或?qū)ο蠹?,也可以是圖片或文件流,這些都是可以處理和操作的資源。

面向資源和領(lǐng)域驅(qū)動(dòng)本身不是一種新的軟件工程設(shè)計(jì)方法,真正的方法只有傳統(tǒng)的面向結(jié)構(gòu)設(shè)計(jì)和面向?qū)ο笤O(shè)計(jì)兩種。因此對(duì)于面向資源可以按面向傳統(tǒng)結(jié)構(gòu)化設(shè)計(jì),也可以按面向?qū)ο笤O(shè)計(jì)。當(dāng)然最好的方式仍然是面向?qū)ο筮M(jìn)行設(shè)計(jì)。

資源即實(shí)體,實(shí)體即對(duì)象,這個(gè)對(duì)象代表的是業(yè)務(wù)對(duì)象,有明確的業(yè)務(wù)含義,類(lèi)似供應(yīng)商,采購(gòu)訂單,產(chǎn)品,合同等。同時(shí)這些對(duì)象本身存在關(guān)聯(lián)和遞進(jìn)的層次結(jié)構(gòu),比如供應(yīng)商有對(duì)應(yīng)的聯(lián)系人,有對(duì)應(yīng)的銀行賬號(hào)。產(chǎn)品可能有對(duì)應(yīng)的維修記錄等。

而這些業(yè)務(wù)對(duì)象正是我們?cè)陬I(lǐng)域驅(qū)動(dòng)設(shè)計(jì)時(shí)候經(jīng)常會(huì)識(shí)別的領(lǐng)域?qū)ο?,這個(gè)領(lǐng)域?qū)ο笊婕暗蕉鄠€(gè)子類(lèi),是否歸結(jié)到一個(gè)大的領(lǐng)域?qū)ο笞铌P(guān)鍵的還是是否共屬一個(gè)生命周期。面向資源設(shè)計(jì),完全可以采用面向領(lǐng)域設(shè)計(jì)方法,首先定義領(lǐng)域?qū)ο?,將領(lǐng)域?qū)ο蠼閷?duì)應(yīng)的資源,然后再考慮看這個(gè)資源應(yīng)該暴露哪些能力接口出來(lái)。

所以在微服務(wù)架構(gòu)下,首先要了解清楚面向資源進(jìn)行Rest接口能力設(shè)計(jì),資源的識(shí)別和定義可以參考領(lǐng)域設(shè)計(jì)的思路進(jìn)行,識(shí)別和定義領(lǐng)域?qū)ο?,然后再轉(zhuǎn)為資源定義。

接口服務(wù)的粗粒度是關(guān)鍵

如果我們不按領(lǐng)域?qū)ο蠓绞絹?lái)定義資源,那么我們最容易犯的錯(cuò)誤就是將所有的數(shù)據(jù)庫(kù)表對(duì)象都全部定義為一個(gè)個(gè)獨(dú)立的資源,將這些資源的CRUD操作,全部暴露為Get,Put,Post和Delete接口方法。那么這樣暴露出來(lái)的Http Rest接口方法就全部是細(xì)粒度的接口。

這種方法很省事,一個(gè)模塊有100張表,你只需要暴露100個(gè)接口,每個(gè)接口都含標(biāo)準(zhǔn)的上述操作就完事了。但是這種接口服務(wù)識(shí)別和定義沒(méi)有任何意義,也不符合我們粗粒度的要求。

那么問(wèn)題的關(guān)鍵點(diǎn)在哪里?其關(guān)鍵就是原來(lái)應(yīng)該是粗粒度的體現(xiàn)業(yè)務(wù)價(jià)值的接口服務(wù)全部都變成了細(xì)粒度的DAO訪問(wèn)類(lèi)細(xì)粒度接口服務(wù)。失去了接口的意義,同時(shí)又將本身應(yīng)該完全內(nèi)聚在微服務(wù)模塊內(nèi)部的業(yè)務(wù)邏輯全部暴露到外層去解決。這個(gè)有點(diǎn)類(lèi)似我們?cè)谶M(jìn)行領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)的時(shí)候,經(jīng)常談到的貧血的領(lǐng)域服務(wù)層,即我們的Http Rest接口應(yīng)該是粗粒度的,應(yīng)該是滿血的領(lǐng)域服務(wù)層的能力暴露,而不是底層數(shù)據(jù)庫(kù)CRUD操作的暴露。

通過(guò)識(shí)別的資源來(lái)識(shí)別和定義接口

只要確定了資源,那么我們就很容易來(lái)確定資源應(yīng)該提供哪些接口。

在我們進(jìn)行接口設(shè)計(jì)的時(shí)候,如果一個(gè)資源完全不需要和外部微服務(wù)模塊或外部應(yīng)用打交道,那么這個(gè)資源完全不用開(kāi)放任何接口。這個(gè)是我一直強(qiáng)調(diào)的原則,即在微服務(wù)模塊內(nèi)部最好是走傳統(tǒng)API接口交付方法進(jìn)行調(diào)用,而不是走Http Rest接口服務(wù),這一方面是提升性能,一方面是減少各類(lèi)難以應(yīng)對(duì)的分布式事務(wù)問(wèn)題。

在資源定義清楚后,往往資源都是一個(gè)復(fù)合對(duì)象,比如采購(gòu)訂單資源,涉及到采購(gòu)訂單頭或采購(gòu)訂單明顯信息,之間還存在關(guān)聯(lián),但是這是一個(gè)完整的資源對(duì)象。對(duì)于采購(gòu)訂單對(duì)象,根據(jù)業(yè)務(wù)場(chǎng)景,存在外部導(dǎo)入新的采購(gòu)訂單,存在外部對(duì)已有的采購(gòu)訂單進(jìn)行變更后導(dǎo)入,存在外部需要查詢采購(gòu)訂單集合,同時(shí)查看某一個(gè)特定key值的采購(gòu)訂單的詳細(xì)明細(xì)數(shù)據(jù)。這可能是我們經(jīng)常會(huì)遇到的接口需求場(chǎng)景,從這些場(chǎng)景可以看到,我們的設(shè)計(jì)完全可以基于采購(gòu)訂單資源展開(kāi)。

創(chuàng)建新的采購(gòu)訂單:POST /Orders

修改一張ID為1的已有訂單:PATCH /Orders/1

刪除ID為1的已有訂單:DELETE /Orders/1

查詢所有采購(gòu)訂單:GET /Orders

查詢ID為1的采購(gòu)訂單:GET /Orders/1

查詢1月到5月的訂單:GET /Orders?StartData='201801'&&EndDate='201805'

可以看到,第一種方法就是上面的,可以直接在資源后面增加不同的參數(shù)條件進(jìn)行模糊查詢。其次,我們可以將查詢條件定義為一個(gè)查詢實(shí)體類(lèi),同時(shí)將整個(gè)查詢實(shí)體類(lèi)的信息通過(guò)一個(gè)完整的實(shí)體對(duì)象傳遞過(guò)去進(jìn)行查詢,查詢完成后再返回相應(yīng)的結(jié)果。比如我們定義一個(gè)OrderQueryExt實(shí)體類(lèi)。

基于特定條件的模糊查詢:POST /Orders/OrderQueryExt

那是否會(huì)存在只查詢一張采購(gòu)訂單的采購(gòu)明細(xì)列表信息?如果存在這種情況,應(yīng)該按照資源和資源層次關(guān)系進(jìn)行設(shè)計(jì),由資源逐層展開(kāi)查詢。

查詢ID為1的訂單的所有采購(gòu)明細(xì):GET /Orders/1/OrderDetails

查詢ID為1的訂單的流程審批記錄信息:GET /Orders/1/ProcessDetails

查詢ID為1的訂單的所有附件信息:GET /Orders/1/Attaches

對(duì)于PUT和PATCH而言,如果涉及的情況一般是對(duì)實(shí)體的部分?jǐn)?shù)據(jù)進(jìn)行更新,同時(shí)還需要支持SaveAndUpdate操作,那么我們一般都采用PATCH方式,而不是PUT方式。即實(shí)際資源接口設(shè)計(jì)的時(shí)候,單純的PUT場(chǎng)景往往現(xiàn)在已經(jīng)很少發(fā)生。

定義業(yè)務(wù)規(guī)則和邏輯處理類(lèi)接口

這是我們遇到的第二大類(lèi),前面基于資源進(jìn)行接口設(shè)計(jì)思路已經(jīng)很明確。但是對(duì)于業(yè)務(wù)規(guī)則處理類(lèi)往往比較難,比如我們經(jīng)常遇到的提交報(bào)賬單的時(shí)候需要進(jìn)行預(yù)算校驗(yàn)和控制,這個(gè)就是典型的業(yè)務(wù)規(guī)則處理類(lèi),報(bào)賬單提交需要,合同提交往往也需要。

那么這里的資源究竟是什么?

對(duì)于預(yù)算信息應(yīng)該不是這里的資源,因?yàn)轭A(yù)算信息的錄入和維護(hù),才會(huì)涉及到預(yù)算信息開(kāi)放接口。而這里的業(yè)務(wù)場(chǎng)景是對(duì)已有的預(yù)算信息進(jìn)行規(guī)則計(jì)算和校驗(yàn)。

基于這類(lèi)場(chǎng)景,我們看到比較好的設(shè)計(jì)方法是定義一個(gè)獨(dú)立的規(guī)則類(lèi),將規(guī)則類(lèi)映射為一個(gè)資源,比如這例子里面我們可以定義一個(gè)BudgetControl的規(guī)則類(lèi),這個(gè)類(lèi)可以定義為一個(gè)資源對(duì)象。任何一個(gè)規(guī)則處理都涉及到有具體的輸入和輸出。

比如預(yù)算校驗(yàn):

輸入:具體的組織信息,預(yù)算科目信息,當(dāng)前申請(qǐng)預(yù)算信息,年度或月度信息

輸出:校驗(yàn)結(jié)果信息

你會(huì)看到對(duì)于預(yù)算校驗(yàn),預(yù)算扣減,預(yù)算凍結(jié),實(shí)際上他們的輸入和輸出都是相同的,那么我們可以劃歸到同一個(gè)規(guī)則處理類(lèi)里面進(jìn)行處理。那么規(guī)則類(lèi)的定義,需要增加一個(gè)規(guī)則處理類(lèi)型即可。

那么不論是預(yù)算校驗(yàn),還是預(yù)算凍結(jié),可以看到實(shí)際的接口調(diào)用都是:

POST /BudgetControls

當(dāng)然也可以將預(yù)算檢查,預(yù)算凍結(jié)等定義為預(yù)算控制類(lèi)的子對(duì)象,比如預(yù)算檢查Valid,那接口調(diào)用為:

POST /BudgetControls/Valid

所以對(duì)于業(yè)務(wù)規(guī)則的處理可以看到,最重要的是業(yè)務(wù)規(guī)則類(lèi)的定義,業(yè)務(wù)規(guī)則類(lèi)定義清楚了,業(yè)務(wù)規(guī)則類(lèi)轉(zhuǎn)為資源,形成對(duì)資源的Http操作接口。

對(duì)于業(yè)務(wù)規(guī)則類(lèi),一定是粗粒度服務(wù)接口,規(guī)則的處理邏輯都應(yīng)該完全控制在模塊內(nèi)部而不是被暴露到外面去。因此對(duì)于規(guī)則類(lèi)的定義也是,僅僅提供僅有的輸入和輸出,能夠滿足規(guī)則處理和計(jì)算要求即可。

返回上頁(yè)
韩国三级视频网站| 麻豆污视频| 国产视频久久久| 成人免费观看的视频黄页| 精品视频在线看| 国产一区精品| 久久久久久久男人的天堂| 青青久热| 国产91丝袜高跟系列| 欧美激情一区二区三区视频| 香蕉视频久久| 国产a视频| 91麻豆tv| 可以免费在线看黄的网站| 99久久网站| 97视频免费在线观看| 黄视频网站在线看| 午夜精品国产自在现线拍| 日韩av成人| 精品视频在线看| 一级女性全黄久久生活片| 亚洲天堂在线播放| 九九热国产视频| 午夜在线亚洲男人午在线| 国产成人精品综合在线| 日韩中文字幕一区| 999精品在线| 免费的黄视频| 亚欧视频在线| 免费一级片在线| 99色视频在线观看| 国产欧美精品午夜在线播放| 国产麻豆精品| 一 级 黄 中国色 片| 欧美大片毛片aaa免费看| 午夜激情视频在线播放| 国产精品免费精品自在线观看| 国产伦理精品| 欧美α片无限看在线观看免费| 可以免费在线看黄的网站| 国产网站在线| 国产视频久久久| 99色视频在线观看| 高清一级淫片a级中文字幕| 成人高清视频在线观看| 亚飞与亚基在线观看| 999久久66久6只有精品| 高清一级淫片a级中文字幕| 欧美另类videosbestsex视频| 成人免费观看的视频黄页| 亚洲精品影院一区二区| 日日日夜夜操| 欧美一区二区三区在线观看| 国产亚洲免费观看| 中文字幕97| 久久国产影视免费精品| 欧美电影免费| 日本免费看视频| 国产激情一区二区三区| 亚洲 欧美 成人日韩| 色综合久久久久综合体桃花网| 精品国产亚洲一区二区三区| 亚洲天堂免费| 尤物视频网站在线| 可以免费在线看黄的网站| 精品视频一区二区| 九九久久国产精品大片| 欧美激情一区二区三区在线播放 | 九九精品在线| 尤物视频网站在线观看| 麻豆网站在线看| 精品久久久久久综合网| 久久精品人人做人人爽97| 亚洲天堂在线播放| 成人免费福利片在线观看| 日日爽天天| 国产国语对白一级毛片| 一级女性全黄久久生活片| 91麻豆精品国产自产在线| 久久国产精品自线拍免费| 九九九网站| 亚洲www美色| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 精品国产一区二区三区国产馆| 国产视频在线免费观看| 欧美激情在线精品video| 精品视频在线看 | 91麻豆精品国产片在线观看| 精品视频在线观看免费| 亚洲 激情| 久草免费在线观看| 日本免费乱人伦在线观看| 欧美a级片免费看| a级黄色毛片免费播放视频| 国产麻豆精品hdvideoss| 青青青草影院| 日本伦理片网站| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 在线观看成人网| 日韩在线观看视频黄| 天天做日日爱夜夜爽| 国产亚洲精品成人a在线| 欧美1区2区3区| 免费毛片基地| 欧美激情一区二区三区视频高清 | 韩国三级香港三级日本三级| 免费的黄视频| 成人影视在线观看| 麻豆网站在线看| 精品国产亚洲一区二区三区| 黄色福利片| 成人免费观看男女羞羞视频| 日韩欧美一二三区| 亚洲第一视频在线播放| 欧美一级视频免费| 国产麻豆精品视频| 四虎影视久久| 国产视频一区二区在线观看| 精品在线观看国产| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 国产网站在线| 欧美日本二区| 欧美日本免费| 台湾毛片| 国产一区国产二区国产三区| 欧美另类videosbestsex| 99久久精品国产国产毛片| 青青久久精品| 日韩欧美一二三区| 欧美a级成人淫片免费看| 国产一区国产二区国产三区| 天堂网中文字幕| 国产伦精品一区二区三区在线观看| 国产一区二区精品久久| 成人影院久久久久久影院| 麻豆网站在线看| 日本特黄特色aaa大片免费| 日本伦理片网站| 欧美a免费| 青青久久精品国产免费看| 国产不卡在线观看| 久久国产精品永久免费网站| 天天做人人爱夜夜爽2020| 好男人天堂网 久久精品国产这里是免费 国产精品成人一区二区 男人天堂网2021 男人的天堂在线观看 丁香六月综合激情 | 毛片高清| 成人免费观看的视频黄页| 99色视频在线观看| 黄视频网站在线观看| 免费国产在线视频| 天堂网中文字幕| 国产高清在线精品一区二区| 久久精品免视看国产成人2021| 国产麻豆精品视频| 亚洲天堂免费| 你懂的在线观看视频| 亚欧视频在线| 精品视频免费看| 国产a视频| 精品久久久久久免费影院| 亚洲精品中文字幕久久久久久| 日韩中文字幕在线亚洲一区| 日韩中文字幕在线亚洲一区| 欧美夜夜骑 青草视频在线观看完整版 久久精品99无色码中文字幕 欧美日韩一区二区在线观看视频 欧美中文字幕在线视频 www.99精品 香蕉视频久久 | 国产福利免费视频| 韩国三级视频在线观看| 国产一区二区精品在线观看| 午夜欧美成人久久久久久| 成人免费观看男女羞羞视频| 九九精品在线播放| 超级乱淫黄漫画免费| 欧美国产日韩精品| 欧美a免费| 国产高清视频免费观看| 日韩免费在线观看视频| 欧美激情伊人| 日本免费区| 999久久久免费精品国产牛牛| 韩国妈妈的朋友在线播放| 欧美日本韩国| 毛片高清| 色综合久久天天综合绕观看| 亚洲天堂免费| 午夜欧美福利| 日韩欧美一二三区| 日韩专区在线播放| 国产网站麻豆精品视频| 日本特黄特色aa大片免费| 国产伦精品一区三区视频| 国产麻豆精品| 国产伦理精品| 91麻豆精品国产自产在线观看一区| 久久国产精品只做精品| 欧美a级大片| 亚洲天堂免费观看| 午夜在线影院| 国产极品白嫩美女在线观看看| 成人影院久久久久久影院| 久久精品店| 四虎久久精品国产| 精品国产亚一区二区三区|