作為一個產(chǎn)品人赔嚎,聽不懂技術(shù)小哥的“黑話”怎么能行呢皮假?今天我們先來揭秘下技術(shù)小哥的口中常常提起的“微服務(wù)”。
要說清楚什么是“微服務(wù)”衩椒,我們還是得回溯以往蚌父,看看從單體架構(gòu)到SOA架構(gòu),再到微服務(wù)架構(gòu)的演化過程毛萌。
單體架構(gòu)
如常見的ERP/HRM軟件苟弛,所有的系統(tǒng)功能都在一個項目中,團(tuán)隊中任意成員修改一段代碼阁将,都需要重啟整個系統(tǒng)進(jìn)行部署膏秫。隨著功能的升級,整個研發(fā)做盅、發(fā)布缤削、定位問題,擴(kuò)展吹榴,升級這樣一個“怪物”系統(tǒng)會變得越來越困難亭敢。
SOA架構(gòu)
SOA(Service-oriented architecture,面向服務(wù)架構(gòu))图筹,1996年帅刀,Gartner最早提出SOA,2000年后業(yè)界普遍認(rèn)識到SOA思想的重要性远剩。
SOA出現(xiàn)的背景是企業(yè)內(nèi)部的IT系統(tǒng)重復(fù)建設(shè)且效率低下扣溺,比如說訂單系統(tǒng)、財務(wù)系統(tǒng)都要用到HRM中的員工信息民宿,如果分別開發(fā)接口娇妓,則出現(xiàn)了重復(fù)建設(shè)像鸡。所以ESB(Enterprise Service Bus活鹰,中文翻譯為“企業(yè)服務(wù)總線”)應(yīng)運而生,所有系統(tǒng)都在ESB發(fā)布接口只估,提供服務(wù)志群。就像上面這個例子,HRM就只要在ESB發(fā)布員工信息這一個服務(wù)蛔钙,訂單系統(tǒng)锌云、財務(wù)系統(tǒng)就都可以都調(diào)用此項服務(wù)。
ESB雖然功能強(qiáng)大吁脱,但現(xiàn)實中的協(xié)議有很多種桑涎,如JMS彬向、 WS、 HTTP攻冷、 RPC等娃胆,數(shù)據(jù)格式也有很多種,如XML等曼、 JSON里烦、二進(jìn)制、 HTML等禁谦。 ESB要完成這么多協(xié)議和數(shù)據(jù)格式的互相轉(zhuǎn)換胁黑,工作量和復(fù)雜度都很大,而且這種轉(zhuǎn)換是需要耗費大量計算性能的州泊,當(dāng)ESB承載的消息太多時丧蘸, ESB本身會成為整個系統(tǒng)的性能瓶頸。
微服務(wù)架構(gòu)
James Lewis和Martin Fowler合寫了關(guān)于微服務(wù)的一篇學(xué)術(shù)性的文章遥皂,詳細(xì)闡述了微服務(wù):
In short, the microservice architectural style is an approach to developing a single application as a suite of small services, each running in its own process and communicating with lightweight mechanisms, often an HTTP resource API. These services are built around business capabilitiesand independently deployable by fully automated deployment machinery触趴。
上述英文的三個關(guān)鍵詞分別是: small、 lightweight渴肉、 automated冗懦,基本上濃縮了微服務(wù)的精華,也是微服務(wù)與SOA的本質(zhì)區(qū)別所在仇祭。
? ? ?-Samll披蕉,服務(wù)的粒度小,一個服務(wù)專注于莫一模塊乌奇。
? ? ?-Lightweight 没讲,通過HTTP/REST API等輕量級接口協(xié)議進(jìn)行通信。
? ? ?-Automated礁苗,通過自動化的服務(wù)部署爬凑、服務(wù)治理體系對微服務(wù)進(jìn)行管理。
雖然微服務(wù)架構(gòu)具有解耦试伙,高可用嘁信,可拓展性高的優(yōu)點,但是并不是“銀彈”疏叨。容易采坑有以下兩點:
1.微服務(wù)劃分的粒度過小導(dǎo)致開發(fā)人員無法應(yīng)付 潘靖;
2.基礎(chǔ)設(shè)施不完備導(dǎo)致微服務(wù)管理困難,復(fù)雜度提高蚤蔓,效率降低卦溢。
各架構(gòu)對比
推薦閱讀:
《漫畫:什么是微服務(wù)》
參考資料:
《從0開始學(xué)架構(gòu)》-李運華
《從0開始學(xué)微服務(wù)》-胡忠想