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