IT架構(gòu)一直從all in one到近兩年熱門的微服務(wù)架構(gòu),技術(shù)不斷進(jìn)步,微服務(wù)架構(gòu)模式(Microservice Architect Pattern)開始被越來越多的企業(yè)所接受,那么究竟什么是微服務(wù)架構(gòu)?微服務(wù)架構(gòu)模式有什么優(yōu)點(diǎn)呢?
從整個IT技術(shù)發(fā)展趨勢來看,我們可以看到無論是硬件、還是軟件、還是基礎(chǔ)架構(gòu)都在朝著輕量化的方向發(fā)展。云計(jì)算的發(fā)展更讓資源的調(diào)控靈活性和部署速度都有所提高,微服務(wù)就是一項(xiàng)在云中部署應(yīng)用和服務(wù)的技術(shù)。采用化整為零的概念,將復(fù)雜的IT部署,通過功能化、原子化分解,形成一種松散耦合的組件,讓其更容易升級和擴(kuò)展。
ThoughtWorks的首席科學(xué)家,馬丁·福勒先生對微服務(wù)做出了這樣的定義:“微服務(wù)架構(gòu)是一種架構(gòu)模式,它提倡將單一應(yīng)用程序劃分成一組小的服務(wù),服務(wù)之間互相協(xié)調(diào)、互相配合,為用戶提供最終價值。每個服務(wù)運(yùn)行在其獨(dú)立的進(jìn)程中,服務(wù)與服務(wù)間采用輕量級的通信機(jī)制互相溝通(通常是基于HTTP協(xié)議的RESTful API)。每個服務(wù)都圍繞著具體業(yè)務(wù)進(jìn)行構(gòu)建,并且能夠被獨(dú)立的部署到生產(chǎn)環(huán)境、類生產(chǎn)環(huán)境等。另外,應(yīng)當(dāng)盡量避免統(tǒng)一的、集中式的服務(wù)管理機(jī)制,對具體的一個服務(wù)而言,應(yīng)根據(jù)業(yè)務(wù)上下文,選擇合適的語言、工具對其進(jìn)行構(gòu)建。”
微服務(wù)架構(gòu)是一項(xiàng)在云中部署應(yīng)用和服務(wù)的技術(shù)
總的來說,可以將微服務(wù)架構(gòu)的優(yōu)勢歸結(jié)為以下幾點(diǎn):
1、復(fù)雜度可控
在all in one的狀態(tài)下,容易造成盲人摸象的狀態(tài),造成不必要的數(shù)據(jù)孤島。而微服務(wù)架構(gòu)通過分解單體式應(yīng)用為多個服務(wù)方法,讓復(fù)雜性可控。為了實(shí)現(xiàn)同一功能,應(yīng)用被分解為多個可管理的分支或服務(wù),通過微服務(wù)架構(gòu)模式,讓復(fù)雜的功能,通過模塊化的方式呈現(xiàn)出來,讓單個服務(wù)更容易開發(fā)和維護(hù)。
避免“盲人摸象”
2、靈活可擴(kuò)展
靈活性是基于微服務(wù)架構(gòu)模式使得每個服務(wù)獨(dú)立擴(kuò)展。微服務(wù)架構(gòu)下,技術(shù)選型是去中心化的。在這種模式下,每個團(tuán)隊(duì)都可以根據(jù)自身服務(wù)的需求和行業(yè)發(fā)展?fàn)顩r做出自己的判斷,選擇適合的技術(shù)棧。
3、獨(dú)立部署
由于微服務(wù)具備獨(dú)立的運(yùn)行進(jìn)程,所以每個微服務(wù)也可以獨(dú)立部署。這樣,當(dāng)某個微服務(wù)發(fā)生變更時無需編譯、部署整個應(yīng)用,讓發(fā)布更高效,右下縮短應(yīng)用交付周期。UI團(tuán)隊(duì)可以采用AB測試,快速的部署變化。微服務(wù)架構(gòu)模式使得持續(xù)化部署成為可能。
4、開發(fā)針對性更強(qiáng)
眾所周知,在單塊架構(gòu)系統(tǒng)下,新人的培養(yǎng)周期很長,需要花費(fèi)大量時間了解本地開發(fā)環(huán)境。而微服務(wù)架構(gòu)模式使得每個服務(wù)獨(dú)立擴(kuò)展,開發(fā)運(yùn)維人員也不需要在花費(fèi)一個月的時間去熟悉本地環(huán)境,而只需要了解自己所處的模塊狀態(tài)即可。
John Allspaw與Adrian Cockcroft爭論微服務(wù)
5、降低TCO
在傳統(tǒng)IT架構(gòu)中,即單塊架構(gòu)系統(tǒng)中,是以技術(shù)分層,譬如邏輯層、數(shù)據(jù)層等。但隨著市場需求的不斷變化,用戶需求住家個性化,開發(fā)周期需要越來越短,產(chǎn)品的生命周期也開始變短,單塊架構(gòu)系統(tǒng)開始面臨挑戰(zhàn)。無論是開發(fā)還是維護(hù)成本太高。
相較而言,微服務(wù)架構(gòu)模式下,當(dāng)某一組件發(fā)生故障時,不會發(fā)現(xiàn)單塊架構(gòu)系統(tǒng)的進(jìn)程內(nèi)擴(kuò)散等弊端,故障會被隔離在單個服務(wù)中。