前言
在這篇文章中,我將演示在決定使用單體架構(gòu)、微服務(wù)架構(gòu)和無(wú)服務(wù)器架構(gòu)時(shí)的權(quán)衡的簡(jiǎn)化心智模型。目標(biāo)是突顯每種風(fēng)格的固有優(yōu)勢(shì)和缺陷,并提供關(guān)于何時(shí)選擇哪種架構(gòu)風(fēng)格的指導(dǎo)。YaA28資訊網(wǎng)——每日最新資訊28at.com
單體架構(gòu)
對(duì)于小團(tuán)隊(duì)或項(xiàng)目來(lái)說(shuō)是理想的入門(mén)架構(gòu)。它簡(jiǎn)單易上手,通常在需要超過(guò)一個(gè)團(tuán)隊(duì)的規(guī)模之前能夠提供很多收益。YaA28資訊網(wǎng)——每日最新資訊28at.com
在構(gòu)建單體架構(gòu)時(shí),務(wù)必從模塊化開(kāi)始,即使可能會(huì)增加樣板代碼。這意味著構(gòu)建組件并在層之間保持嚴(yán)格的邏輯分離(更多詳見(jiàn)Clean Architecture)。YaA28資訊網(wǎng)——每日最新資訊28at.com
YaA28資訊網(wǎng)——每日最新資訊28at.com
- 通信層 — 服務(wù)的外部接口
- 封裝 — 業(yè)務(wù)邏輯或用例的清晰接口
- 領(lǐng)域?qū)嶓w — 業(yè)務(wù)對(duì)象的數(shù)據(jù)表示,僅供內(nèi)部使用
- 架構(gòu)隔離 — 避免實(shí)體之間的跨領(lǐng)域連接
優(yōu)勢(shì)
YaA28資訊網(wǎng)——每日最新資訊28at.com
?開(kāi)發(fā)便利性 — 所有代碼都在一起。?部署便利性 — 所有代碼一起部署。?網(wǎng)絡(luò)效率 — 所有計(jì)算發(fā)生在進(jìn)程內(nèi)。?成本共享效率 — 每臺(tái)服務(wù)器上有大型共享的 CPU 和內(nèi)存池。YaA28資訊網(wǎng)——每日最新資訊28at.com
權(quán)衡
YaA28資訊網(wǎng)——每日最新資訊28at.com
- 組織規(guī)模的限制 — 由于開(kāi)發(fā)、部署和代碼的緊密耦合,需要協(xié)調(diào)的開(kāi)銷增加。
- 技術(shù)債務(wù)的風(fēng)險(xiǎn) — 容易采取捷徑,構(gòu)建緊密耦合的代碼。
當(dāng)您的團(tuán)隊(duì)看起來(lái)像上面的插圖時(shí),這表明您應(yīng)該考慮演進(jìn)您的架構(gòu)到微服務(wù)。開(kāi)發(fā)中的復(fù)雜性增加會(huì)高風(fēng)險(xiǎn)地降低質(zhì)量,從而導(dǎo)致生產(chǎn)力減緩。這產(chǎn)生了一個(gè)矛盾的效果,即您雇傭的人越多,交付就變得越慢和不可預(yù)測(cè)。YaA28資訊網(wǎng)——每日最新資訊28at.com
微服務(wù)
對(duì)于業(yè)務(wù)需求開(kāi)始增長(zhǎng)并且團(tuán)隊(duì)分成多個(gè)團(tuán)隊(duì)時(shí),這是理想的架構(gòu)。這個(gè)里程碑自然地與將單體架構(gòu)拆分成自然的、上下文邊界的微服務(wù)相配合,以便團(tuán)隊(duì)可以更獨(dú)立地?cái)U(kuò)展。YaA28資訊網(wǎng)——每日最新資訊28at.com
YaA28資訊網(wǎng)——每日最新資訊28at.com
設(shè)計(jì)你想要的組織,架構(gòu)會(huì)追隨著,躊躇著走來(lái)YaA28資訊網(wǎng)——每日最新資訊28at.com
我強(qiáng)烈建議采用Inverse Conway Maneuver策略,打破您的通信模式,否則促使單體的熟悉模式將繼續(xù)像膠水一樣將團(tuán)隊(duì)粘在一起。YaA28資訊網(wǎng)——每日最新資訊28at.com
優(yōu)勢(shì)
YaA28資訊網(wǎng)——每日最新資訊28at.com
- 獨(dú)立交付 — 減少依賴關(guān)系。
- 明確所有權(quán) — 實(shí)現(xiàn)強(qiáng)大的所有權(quán)模型。
- 組織規(guī)模 — 促進(jìn)團(tuán)隊(duì)間相對(duì)獨(dú)立的并行努力。
- 獨(dú)立擴(kuò)展 — 計(jì)算隔離允許平臺(tái)的各部分獨(dú)立擴(kuò)展。
權(quán)衡
YaA28資訊網(wǎng)——每日最新資訊28at.com
- 協(xié)調(diào)標(biāo)準(zhǔn) — 標(biāo)準(zhǔn)的變化可能泄漏到架構(gòu)中,降低一致性和整體可維護(hù)性。
- 網(wǎng)絡(luò)延遲懲罰 — 曾經(jīng)在單個(gè)服務(wù)中共同存在的進(jìn)程現(xiàn)在正在進(jìn)行引入端到端計(jì)算的網(wǎng)絡(luò)調(diào)用,引入了延遲。
- 資源共享減少 — 曾經(jīng)共享相同 CPU、內(nèi)存和磁盤(pán)需求的進(jìn)程現(xiàn)在部署有自己的專用資源。
- 成本增加 — 與單體相比,每個(gè)服務(wù)的額外網(wǎng)絡(luò) I/O 和資源會(huì)導(dǎo)致額外的成本。
無(wú)服務(wù)器
對(duì)于不需要實(shí)時(shí)保證的某些工作負(fù)載來(lái)說(shuō),這是理想YaA28資訊網(wǎng)——每日最新資訊28at.com
的架構(gòu)風(fēng)格。異步、分布式處理,不要求代碼始終保持熱和立即可用。YaA28資訊網(wǎng)——每日最新資訊28at.com
YaA28資訊網(wǎng)——每日最新資訊28at.com
截至撰寫(xiě)本文時(shí),該行業(yè)正在朝著編寫(xiě)更經(jīng)濟(jì)的系統(tǒng)的“綠色”方向發(fā)展,以減少我們計(jì)算的碳足跡。我認(rèn)為這種架構(gòu)風(fēng)格是生態(tài)系統(tǒng)的一個(gè)強(qiáng)大補(bǔ)充,但并不能完全取代它的前輩的必要性。YaA28資訊網(wǎng)——每日最新資訊28at.com
優(yōu)勢(shì)
YaA28資訊網(wǎng)——每日最新資訊28at.com
- 精益擴(kuò)展 — 僅擴(kuò)展所需的無(wú)服務(wù)器函數(shù)。
- 成本效益 — 僅在需要時(shí)使用最少的資源部署資源。(警告:僅當(dāng)計(jì)算是間歇性的時(shí)候。在計(jì)算需要保持熱時(shí),請(qǐng)查看下面的權(quán)衡。)
權(quán)衡
YaA28資訊網(wǎng)——每日最新資訊28at.com
- 資源效率懲罰 — 曾經(jīng)共享相同 CPU、內(nèi)存和磁盤(pán)需求的進(jìn)程現(xiàn)在每個(gè)都有自己的最小要求。
- 成本效益差 — 只有在部署時(shí)有恒定需求,使每個(gè)函數(shù)運(yùn)行像熱服務(wù)器時(shí)。
- 網(wǎng)絡(luò)懲罰 — 與單體和微服務(wù)相比,每個(gè)函數(shù)調(diào)用現(xiàn)在都是一個(gè)網(wǎng)絡(luò)跳躍,而不是作為進(jìn)程內(nèi)計(jì)算共同存在。
隨著時(shí)間的推移演進(jìn)
那么,當(dāng)您的業(yè)務(wù)或產(chǎn)品的需求不斷增長(zhǎng)時(shí),您的架構(gòu)演進(jìn)可能是什么樣子呢?YaA28資訊網(wǎng)——每日最新資訊28at.com
YaA28資訊網(wǎng)——每日最新資訊28at.com
本文鏈接:http://m.www897cc.com/showinfo-26-65366-0.html單體架構(gòu)、微服務(wù)和無(wú)服務(wù)器架構(gòu)
聲明:本網(wǎng)頁(yè)內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問(wèn)題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。郵件:2376512515@qq.com
上一篇: Doris到底有多牛,為什么大廠都在使用它?
下一篇: 從 SQLlin 的更新看 Kotlin Multiplatform 技術(shù)更迭