微服務(wù)之建模語言
針對微服務(wù)的建模語言
模式是針對特定上下文中發(fā)生的問題的可重用解決方案,這一概念來源于建筑行業(yè)。模式語言是為了解決特定領(lǐng)域內(nèi)問題的相關(guān)模式的集合。軟件模式是通過定義一組互相協(xié)作的軟件元素來解決軟件架構(gòu)或這幾問題。
常用的模式結(jié)構(gòu)包括三個重要部分:
需求(forces):需求部分描述了必須解決的問題和圍繞這個問題的特定上下文環(huán)境。需求有時是相互沖突的,所有要確定好優(yōu)先級,根據(jù)排序級別對其取舍。
結(jié)果上線文(resulting context):即采用模式后可能帶來的后果。結(jié)果上下文提供了更加完整、從不偏不倚的視角來描述的解決方案,這有助于更好的決策。可以從以下三個緯度指標(biāo)決策:
好處:這個模式的好處和它解決了什么需求
弊端:這個模式的弊端和它沒有解決哪些需求
問題:使用這個模式所引入的新問題
相關(guān)模式(related patterns):這部分描述了這個模式和其他模式之間的關(guān)系。通常模式之間存在5種關(guān)系:
前導(dǎo)(predecessor):前導(dǎo)模式是催生這個模式的需求模式,例如,微服務(wù)架構(gòu)模式是除單體架構(gòu)模式以外整個模式語言中所有模式的前導(dǎo)模式。【概念很繞,簡單理解就是將當(dāng)前所采用的模式作為整個架構(gòu)決策的出發(fā)點(diǎn),即事件原由也就對標(biāo)前面的需求部分】
后續(xù)(successor):后續(xù)模式是指用來解決當(dāng)前模式引入的新問題的模式,例如,如果你采納了微服務(wù)架構(gòu)模式,你需要一系列的后續(xù)模式來解決諸如服務(wù)發(fā)現(xiàn)、斷路器等微服務(wù)帶來的新問題。【實(shí)際上就是結(jié)果上下文中的弊端】
代替(alternative):當(dāng)前模式的替代模式,提供了另外的解決方案,例如,單體機(jī)構(gòu)和微服務(wù)架構(gòu)就是互為替代的模式,他們都是應(yīng)用架構(gòu)風(fēng)格。【也就是解決同樣問題要有對標(biāo)方案,不能只有一種。通常我們在做架構(gòu)設(shè)計的時候,也會針對不同場景給出多種方案,列出其特點(diǎn)根據(jù)需求和結(jié)果價值權(quán)衡取舍。】
泛化(generalization):針對一個問題的一般性解決方案。
特化(specialization):針對特定模式的具體解決方案。
通過這些關(guān)系相關(guān)的模式集合形成所謂的模式語言。模式語言中的模式共同解決特定領(lǐng)域中的問題。微服務(wù)架構(gòu)中的模式語言是一組模式,可以幫助架構(gòu)師使用微服務(wù)架構(gòu)構(gòu)建應(yīng)用程序。

上圖來源于https://microservices.io/patterns/cn/index.html,圖中Chris通過單體應(yīng)用到微服務(wù)架構(gòu)轉(zhuǎn)變過程案例說明模型語言的概念。
微服務(wù)的建模語言可以為是一種業(yè)務(wù)的抽象,而業(yè)務(wù)抽象又會讓我們想到中臺這個概念。想到中臺又會想到中臺建設(shè)過程中總被提起的領(lǐng)域模型。搞清楚 DDD、微服務(wù)和中臺之間的關(guān)系至關(guān)重要。中臺本質(zhì)是業(yè)務(wù)模型,微服務(wù)是業(yè)務(wù)模型的系統(tǒng)落地,DDD 是一種設(shè)計思想,它可以同時指導(dǎo)中臺業(yè)務(wù)建模和微服務(wù)設(shè)計,它們之間就是這樣的一個鐵三角關(guān)系。

