微服務(wù)拆分的10條戒律
微服務(wù)拆分10條戒律
什么是微服務(wù)
微服務(wù)(英語(yǔ):Microservices)是一種軟件架構(gòu)風(fēng)格,它是以專注于單一責(zé)任與功能的小型功能區(qū)塊 (Small Building Blocks) 為基礎(chǔ),利用模塊化的方式組合出復(fù)雜的大型應(yīng)用程序,各功能區(qū)塊使用與語(yǔ)言無(wú)關(guān) (Language-Independent/Language agnostic)的API集相互通信。微服務(wù)是一種以業(yè)務(wù)功能為主的服務(wù)設(shè)計(jì)概念,每一個(gè)服務(wù)都具有自主運(yùn)行的業(yè)務(wù)功能,對(duì)外開(kāi)放不受語(yǔ)言限制的 API (最常用的是 HTTP),應(yīng)用程序則是由一個(gè)或多個(gè)微服務(wù)組成。

微服務(wù)拆分的10條戒律
1.用有限的上下文和普適語(yǔ)言來(lái)審視您的業(yè)務(wù)領(lǐng)域:
1.與產(chǎn)品所有者進(jìn)行討論:“業(yè)務(wù)目標(biāo)是什么?”、“特定功能中的參與者是誰(shuí)?”、“他們?cè)诙x功能時(shí)使用了哪些術(shù)語(yǔ)?”。在這些每個(gè)步驟上,都要提出更多問(wèn)題,直到您弄清楚沖突的術(shù)語(yǔ)是什么為止,例如“訂單上下文客戶”與“基礎(chǔ)結(jié)構(gòu)支持上下文客戶”是不同的。2.一旦理解了沖突的術(shù)語(yǔ)并結(jié)合了相關(guān)功能,請(qǐng)制定一個(gè)上下文,以便在每個(gè)上下文中的每個(gè)域名的實(shí)體名稱都是清晰的。3.為每種情況定義一種通用語(yǔ)言,以便業(yè)務(wù)團(tuán)隊(duì)和技術(shù)團(tuán)隊(duì)在交流時(shí)可以使用一種通用語(yǔ)言進(jìn)行溝通交流。4.從一個(gè)粗粒度的有界上下文開(kāi)始。如果以后有令人信服的理由進(jìn)行劃分,則劃分有界上下文。如果有商業(yè)原因,我建議不要這樣做。
2.確定核心領(lǐng)域并應(yīng)用創(chuàng)新的點(diǎn)子:
3.對(duì)通用域進(jìn)行成本優(yōu)化:
4.考慮支持領(lǐng)域:
5.引入反腐層(Anti-Corruption Layer):

6.識(shí)別數(shù)據(jù)通信模式:
7.引入事件驅(qū)動(dòng)架構(gòu)(EDA):
Rest API公開(kāi)所有內(nèi)容,那么你將會(huì)看到這些API創(chuàng)建出了一個(gè)非常復(fù)雜的通信網(wǎng)絡(luò)。8.使API簡(jiǎn)潔明了
CustomerUpdateEvent的粗粒度事件,而不是提供兩個(gè)獨(dú)立的事件。9.將相關(guān)的微服務(wù)合并為更大的服務(wù):
10.引入無(wú)縫開(kāi)發(fā)支持工具:
最后
歡迎留言討論。
譯文連接:
https://dzone.com/articles/10-commandments-on-microservice-decomposition
歡迎關(guān)注我的公眾號(hào)“須彌零一”,原創(chuàng)技術(shù)文章第一時(shí)間推送。
