《微服務(wù)設(shè)計》,Building Microservices臂寝,作者Sam Newman章鲤,譯者崔力強、張駿咆贬,人民郵電出版社败徊,2016年。
筆記中有些內(nèi)容直接引用原書掏缎。
================================================================
第三章 如何建模服務(wù)
好的服務(wù)是松耦合和高內(nèi)聚的皱蹦。這兩個詞在很多地方都用到了,那么在微服務(wù)中分別指什么呢眷蜈?松耦合指的是服務(wù)之間耦合度低沪哺,修改一個服務(wù)不用導(dǎo)致另一個服務(wù)跟著修改。高內(nèi)聚指的是服務(wù)內(nèi)部酌儒,相關(guān)的行為都聚集在一個服務(wù)里辜妓,而不是分散在不同服務(wù)中,這樣需要修改一個行為時,只要修改一個微服務(wù)即可嫌拣。
限界上下文(bounded context)來自Eric Evans的《領(lǐng)域驅(qū)動設(shè)計》一書,用來對現(xiàn)實世界領(lǐng)域進行建模呆躲。作者比較認同的對該詞比較好的定義是“一個由顯式邊界限定的特定職責(zé)”异逐。顯示邊界是外部與它交互的必經(jīng)之路。
要能找到限界上下文之間的共享模型插掂,其內(nèi)部和外部的表現(xiàn)形式往往是不一樣的灰瞻。應(yīng)該共享特定的模型,而不是共享表示辅甥,從而避免緊耦合酝润。
單塊系統(tǒng)中的模塊可以較好地轉(zhuǎn)化為微服務(wù)。不要過早地劃分微服務(wù)璃弄,要等到服務(wù)邊界清晰以后再進行要销。
對微服務(wù)建模時,要首先考慮其業(yè)務(wù)功能夏块,再考慮其數(shù)據(jù)疏咐。如果只考慮數(shù)據(jù),則常常建模為CRUD這種貧血服務(wù)脐供。
根據(jù)業(yè)務(wù)邊界浑塞,結(jié)合組織結(jié)構(gòu),由粗粒度到細粒度地逐步劃分限界上下文政己。