前不久,微軟AzureCAT模式和實(shí)踐團(tuán)隊(duì)在Azure架構(gòu)中心發(fā)布了9個(gè)新的微服務(wù)設(shè)計(jì)模式,并給出了這些模式解決的問(wèn)題、方案、使用場(chǎng)景、實(shí)現(xiàn)考量等。微軟團(tuán)隊(duì)稱(chēng)這9個(gè)模式有助于更好的設(shè)計(jì)和實(shí)現(xiàn)微服務(wù),同時(shí)看到業(yè)界對(duì)微服務(wù)的興趣日漸增長(zhǎng),所以也特意將這些模式記錄并發(fā)布。
下圖是微軟團(tuán)隊(duì)建議如何在微服務(wù)架構(gòu)中使用這些模式:
文中提到的9個(gè)模式包括:外交官模式(Ambassador),防腐層(Anti-corruption layer),后端服務(wù)前端(Backends for Frontends),艙壁模式(Bulkhead),網(wǎng)關(guān)聚合(Gateway Aggregation),網(wǎng)關(guān)卸載(Gateway Offloading),網(wǎng)關(guān)路由(Gateway Routing),挎斗模式(Sidecar)和絞殺者模式(Strangler)。這些模式絕大多數(shù)也是目前業(yè)界比較常用的模式,如:
外交官模式(Ambassador)可以用與語(yǔ)言無(wú)關(guān)的方式處理常見(jiàn)的客戶端連接任務(wù),如監(jiān)視,日志記錄,路由和安全性(如TLS)。防腐層(Anti-corruption layer)介于新應(yīng)用和遺留應(yīng)用之間,用于確保新應(yīng)用的設(shè)計(jì)不受遺留應(yīng)用的限制。后端服務(wù)前端(Backends for Frontends)為不同類(lèi)型的客戶端(如桌面和移動(dòng)設(shè)備)創(chuàng)建單獨(dú)的后端服務(wù)。這樣,單個(gè)后端服務(wù)就不需要處理各種客戶端類(lèi)型的沖突請(qǐng)求。這種模式可以通過(guò)分離客戶端特定的關(guān)注來(lái)幫助保持每個(gè)微服務(wù)的簡(jiǎn)單性。艙壁模式(Bulkhead)隔離了每個(gè)工作負(fù)載或服務(wù)的關(guān)鍵資源,如連接池、內(nèi)存和CPU。使用艙壁避免了單個(gè)工作負(fù)載(或服務(wù))消耗掉所有資源,從而導(dǎo)致其他服務(wù)出現(xiàn)故障的場(chǎng)景。這種模式主要是通過(guò)防止由一個(gè)服務(wù)引起的級(jí)聯(lián)故障來(lái)增加系統(tǒng)的彈性。網(wǎng)關(guān)聚合(Gateway Aggregation)將對(duì)多個(gè)單獨(dú)微服務(wù)的請(qǐng)求聚合成單個(gè)請(qǐng)求,從而減少消費(fèi)者和服務(wù)之間過(guò)多的請(qǐng)求。挎斗模式(Sidecar)將應(yīng)用程序的輔助組件部署為單獨(dú)的容器或進(jìn)程以提供隔離和封裝。設(shè)計(jì)模式是對(duì)針對(duì)某一問(wèn)題域的解決方案,它的出現(xiàn)也代表了工程化的可能。隨著微服務(wù)在業(yè)界的廣泛實(shí)踐,相信這個(gè)領(lǐng)域?qū)?huì)走向成熟和穩(wěn)定,筆者期望會(huì)有更多的模式和實(shí)踐出現(xiàn),幫助促進(jìn)這一技術(shù)的進(jìn)一步發(fā)展。感興趣的讀者可以參考微軟的微服務(wù)設(shè)計(jì)模式一文以及Azure架構(gòu)中心的資料為自己的微服務(wù)選擇合適的模式或者提出新的模式。