日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

建模:确定服务的边界——《微服务设计》读书笔记

發(fā)布時(shí)間:2023/12/4 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 建模:确定服务的边界——《微服务设计》读书笔记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

什么樣的服務(wù)才是好的服務(wù)?

? ? ??高內(nèi)聚、松耦合的服務(wù)才是好的服務(wù)。簡(jiǎn)而言之,就是把相關(guān)性強(qiáng)的放在一起,相關(guān)性不強(qiáng)的分開,物以類聚,人以群分,服務(wù)的劃分也是這樣。這就需要確定什么要放在一起,什么是要分開的,這個(gè)尋找的過(guò)程就是確定服務(wù)邊界的過(guò)程。

?

限界上下文

? ? ? ?限界上下文確定了這個(gè)邊界內(nèi)它所承擔(dān)的職責(zé)。

? ? ? Evans在《領(lǐng)域驅(qū)動(dòng)設(shè)計(jì)》中作喻:細(xì)胞之所以會(huì)存在,是因?yàn)榧?xì)胞膜定義了什么在細(xì)胞內(nèi),什么在細(xì)胞外,并且確定了什么物質(zhì)可以通過(guò)細(xì)胞。這是限界上下文的絕好比喻。

? ? ? 任何一個(gè)給定的領(lǐng)域都包含多個(gè)限界上下文。限界上下文中包含了一些內(nèi)容(或者叫模型),它們的相關(guān)性較高,一部分需要與外部通信,一部分不需要與外部通信,每個(gè)限界上下文都有明確的接口,該接口決定了它會(huì)暴露哪些模型給其他的上下文。外部想與限界上下文通信,需要使用模型和它的顯式限界(接口)進(jìn)行通信。這樣做可以得到高內(nèi)聚,從而很好地形成組合限界。

? ? ? 限界與限界之間,也會(huì)存在共享模型,如下所示,倉(cāng)庫(kù)和財(cái)務(wù)都需要庫(kù)存信息,但不能把倉(cāng)庫(kù)所有的庫(kù)存信息都給財(cái)務(wù),因?yàn)橛行┬畔?duì)于財(cái)務(wù)是并沒(méi)有用的,同時(shí)也不能讓財(cái)務(wù)伸到倉(cāng)庫(kù)內(nèi)部去取數(shù)據(jù),這樣有可能會(huì)破壞限界上下文的完整性,因此,我們提供了一個(gè)共享模型——庫(kù)存項(xiàng)。

? ? ? ? ? ? ? ? ??

? ??? 這些模塊限界就可以成為絕佳的微服務(wù)候選,一般來(lái)說(shuō),微服務(wù)應(yīng)清晰地和限界上下文保持一致。

?

如何確定限界上下文

??? ??1.推薦使用領(lǐng)域來(lái)表分解限界上下文

? ? ? 如果把系統(tǒng)分解成為限界上下文來(lái)表示領(lǐng)域的話,那么對(duì)于某個(gè)功能所做的修改,就更傾向于在一個(gè)單獨(dú)的微服務(wù)限界之內(nèi)。另外,服務(wù)之間應(yīng)該共享相同的術(shù)語(yǔ),也應(yīng)該反映到服務(wù)的接口上。

? ? ??2.應(yīng)從限界上下文提供的功能來(lái)考慮,而不是數(shù)據(jù)

只考慮數(shù)據(jù)和模型,不考慮上下文的功能,很容易導(dǎo)致“貧血”,所以要先問(wèn)“這個(gè)上下文是做什么用的“,再考慮它”需要什么樣的數(shù)據(jù)“。

? ? ??3.不要過(guò)早劃分上下文

? ? ? 對(duì)于一個(gè)新系統(tǒng)而言,可以先使用一段時(shí)間的單塊系統(tǒng),因?yàn)槿绻?wù)之間的限界搞錯(cuò)了,后面修復(fù)的代價(jià)就會(huì)很大,所以最好能夠等到系統(tǒng)穩(wěn)定下來(lái)之后,再確定把哪些東西作為一個(gè)服務(wù)劃分出去。

? ? ??4.不要排斥嵌套上下文

? ? ???一開始,你會(huì)識(shí)別一些粗粒度的限界上下文,而這些限界上下文可能又包含一些嵌套的限界上下文。如下所示:使用這些嵌套的上下文不直接對(duì)外可見(jiàn),對(duì)于外界來(lái)說(shuō),它們用的還是倉(cāng)庫(kù)的功能,但發(fā)出的請(qǐng)求其實(shí)被透明地映射到了兩個(gè)或更多有服務(wù)上。

? ? ? ? ? ? ? ?

? ? ??當(dāng)然,根據(jù)每個(gè)團(tuán)隊(duì)的情況不同,我們也可以將倉(cāng)庫(kù)的內(nèi)的上下文再隔離出來(lái),如下所示:

? ? ? ? ? ? ??

? ??? 5.謹(jǐn)慎根據(jù)技術(shù)邊界來(lái)確定上下文

? ? ? 一般而言,我們建議按照業(yè)務(wù)的垂直劃分來(lái)建立上下文,而不是按照技術(shù)的分層來(lái)確定上下文,比如,你如果將DAO、BLL、UI層分成3個(gè)不同的服務(wù),那么當(dāng)你需要變更業(yè)務(wù)的時(shí)候,你需要頻繁地同時(shí)修改兩個(gè)服務(wù),這樣顯然是不合理的。但也不是說(shuō)這樣劃分總是不合理,如果一個(gè)組織想達(dá)到某個(gè)性能目標(biāo),這樣劃分反而更合理。

? ? ??

參考

? ? ? 《微服務(wù)設(shè)計(jì)》(Sam Newman 著 / 崔力強(qiáng) 張駿 譯)

相關(guān)文章:?

  • 微服務(wù)的概念——《微服務(wù)設(shè)計(jì)》讀書筆記

  • 微服務(wù)架構(gòu)師的職責(zé)——《微服務(wù)設(shè)計(jì)讀書筆記》

原文地址:http://www.cnblogs.com/gudi/p/6613989.html


.NET社區(qū)新聞,深度好文,微信中搜索dotNET跨平臺(tái)或掃描二維碼關(guān)注

總結(jié)

以上是生活随笔為你收集整理的建模:确定服务的边界——《微服务设计》读书笔记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。