經(jīng)歷過(guò)去的十幾年的發(fā)展,SOA(Service-Oriented Architecture)已經(jīng)獲得了廣泛肯定與應(yīng)用?,F(xiàn)在,隨著云計(jì)算、開(kāi)源、Docker等為技術(shù)界帶來(lái)革 命性的影響,同時(shí),用戶(hù)使用方式與生活方式都在移 動(dòng)化浪潮的裹挾下發(fā)生了巨變,“微服務(wù)”架構(gòu)(MSA:Micro Service Architecture)這一全新的企業(yè)架構(gòu)模式越來(lái)越受到關(guān)注,也有越來(lái)越多的企業(yè)和平臺(tái)服務(wù)商開(kāi)始將“微服務(wù)”的概念轉(zhuǎn)化為實(shí)踐,掌握到第一手的實(shí) 戰(zhàn)經(jīng)驗(yàn)。
應(yīng)該如何理解“微服務(wù)”的性質(zhì)和特點(diǎn)?轉(zhuǎn)型“微服務(wù)”架構(gòu)能夠解決哪些問(wèn)題、需要注意哪些問(wèn)題?為了回答這些疑問(wèn),我們對(duì)普元軟件的資深架構(gòu)師顧偉進(jìn)行了采訪,請(qǐng)他介紹自己對(duì)“微服務(wù)”的理解和經(jīng)驗(yàn)。對(duì)話全文內(nèi)容如下:
InfoQ:請(qǐng)向InfoQ的讀者介紹下自己,目前主要的工作方向及關(guān)注的技術(shù)領(lǐng)域。
顧偉:大家好,我是普元信息技術(shù)股份有限公司的架構(gòu)師顧偉,目前主要從事云計(jì)算、智能運(yùn)維、平臺(tái)基礎(chǔ)架構(gòu)等方向的工作,同時(shí)對(duì)插件開(kāi)發(fā)、HTML5、Docker等技術(shù)有著濃厚的興趣。
InfoQ:微服務(wù)架構(gòu)(Micro Service Architect)近一年多在技術(shù)社區(qū)頻頻被提及,熱度頗高,但對(duì)“微服務(wù)”似乎還沒(méi)有一個(gè)嚴(yán)格的定義。您是如何理解“微服務(wù)”的?
顧偉:在云計(jì)算運(yùn)用愈加廣泛和深入的移 動(dòng)互聯(lián)網(wǎng)時(shí)代,大家的生活都變得越來(lái)越碎片化。坐在地鐵上,你會(huì)隨手發(fā)個(gè)朋友圈,走在公園里,你會(huì)隨手發(fā)個(gè)微博。當(dāng)日常行為變得這么碎片化時(shí),相應(yīng)的支撐服務(wù)應(yīng)該是什么樣的?
在我看來(lái)這些服務(wù)必須是“零散”的,支撐的業(yè)務(wù)是可以快速變化的,服務(wù)之間是可以快速融合的,服務(wù)的性能、安全是有足夠保障的,當(dāng)達(dá)到這種標(biāo)準(zhǔn)的時(shí)候,這些服務(wù)就是我理解的微服務(wù)。
InfoQ:與傳統(tǒng)單塊架構(gòu)相比,“微服務(wù)”架構(gòu)有哪些特點(diǎn)?
顧偉:特點(diǎn)其實(shí)是比較顯然的,比如開(kāi)放、輕量、松耦合、易遷移、易伸縮、容錯(cuò)性、自監(jiān)控、語(yǔ)言中性等??偟膩?lái)說(shuō),微服務(wù)架構(gòu)是一種更靈活、更可靠、更開(kāi)放的架構(gòu)。
InfoQ:像您所說(shuō), “微服務(wù)”是“零散”的,這種特征又能夠幫助企業(yè)解決哪些難點(diǎn)和痛點(diǎn)?
顧偉:我們可以反過(guò)來(lái)看這個(gè)問(wèn)題,傳統(tǒng)的企業(yè)級(jí)架構(gòu),往往會(huì)面臨著幾個(gè)難題:
1. 彈性能力不夠。單塊架構(gòu)使得要伸縮就是整體的伸縮,但你的流量中可能占90%只是針對(duì)其中20%的服務(wù)的訪問(wèn),那為什么不把這20%的服務(wù)獨(dú)立出來(lái)呢?將好的資源用于支撐這些服務(wù),達(dá)到資源的最大化集約使用。
2. 業(yè)務(wù)變化調(diào)整較慢。由于業(yè)務(wù)部署在一起的原因,單個(gè)業(yè)務(wù)的調(diào)整使得整個(gè)應(yīng)用都需要重新集成、測(cè)試、發(fā)布等,雖然有一些自動(dòng)化的保障,但還是無(wú)法做到成本最少,風(fēng)險(xiǎn)最低。
3. 開(kāi)放能力不足。隨著云計(jì)算、云服務(wù)的高度發(fā)展,服務(wù)按需的模式會(huì)越來(lái)越多。一個(gè)企業(yè)不可能所有服務(wù)都自建,也不可能永遠(yuǎn)封閉,而是需要能夠快速整合外部服務(wù),同時(shí)將內(nèi)部的服務(wù)開(kāi)放出去,這也是對(duì)傳統(tǒng)企業(yè)架構(gòu)的一大挑戰(zhàn)。
如何解決這些問(wèn)題,正是微服務(wù)架構(gòu)的關(guān)鍵目標(biāo)所在。微服務(wù)的“零散”特征使得企業(yè)能夠快速應(yīng)對(duì)服務(wù)擴(kuò)容、業(yè)務(wù)開(kāi)放、業(yè)務(wù)變化、服務(wù)整合等需求。
InfoQ:您認(rèn)為“微服務(wù)”架構(gòu)適用于什么樣的企業(yè)和應(yīng)用?
顧偉:如果你認(rèn)為IT建設(shè)是一個(gè)持續(xù)演進(jìn)的過(guò)程,對(duì)企業(yè)發(fā)展有著重大支撐作用的話,微服務(wù)架構(gòu)都會(huì)非常合適。
InfoQ:我們已經(jīng)了解“微服務(wù)”架構(gòu)的優(yōu)勢(shì),那從單塊架構(gòu)轉(zhuǎn)型到“微服務(wù)”架構(gòu),又需要考慮哪些因素或注意哪些問(wèn)題?
顧偉:前面一直在說(shuō)微服務(wù)架構(gòu)的好處,但使用微服務(wù)的同時(shí),對(duì)企業(yè)的IT支撐管理、運(yùn)維等能力的要求也會(huì)相應(yīng)提升,比如:
1. 微服務(wù)之間的通信問(wèn)題。企業(yè)需要提供一套比較完善、輕量的通信機(jī)制,保證服務(wù)調(diào)用的可靠、可跟蹤、高性能等。
2. 微服務(wù)的監(jiān)控度量問(wèn)題。服務(wù)的分散使得交易路徑有時(shí)候會(huì)變得比較復(fù)雜,如何從業(yè)務(wù)維度對(duì)鏈路實(shí)行跟蹤回溯,如何度量整體業(yè)務(wù)的吞吐,如何快速發(fā)現(xiàn)業(yè)務(wù)的瓶頸,是使用微服務(wù)必須解決的問(wèn)題。
3. 微服務(wù)的粒度問(wèn)題。在很多企業(yè)實(shí)行微服務(wù)架構(gòu)時(shí),往往會(huì)走到一些技術(shù)極端,過(guò)度的拆分服務(wù)。微服務(wù)更應(yīng)該類(lèi)似Unix的服務(wù),每個(gè)服務(wù)目標(biāo)單一,只做一件事情,能夠有很好的復(fù)用性。
InfoQ:您在“微服務(wù)”架構(gòu)的實(shí)踐上已經(jīng)有比較豐富的經(jīng)驗(yàn),是否可以簡(jiǎn)單介紹一個(gè)典型案例。
顧偉:去年做過(guò)一個(gè)電 信領(lǐng)域的數(shù)據(jù)發(fā)布的項(xiàng)目,主要場(chǎng)景是將企業(yè)內(nèi)部產(chǎn)生的各類(lèi)數(shù)據(jù),按照不同協(xié)議安全發(fā)布給外部客戶(hù)訂閱。
這個(gè)項(xiàng)目中會(huì)涉及到很多微服務(wù):包括集中調(diào)度(訂閱推送)、文件傳輸、文件存儲(chǔ)、元數(shù)據(jù)管理、權(quán)限認(rèn)證等,每類(lèi)服務(wù)都是集群部署的情況下,最終至少會(huì)有20多個(gè)進(jìn)程,每次到一個(gè)地方部署都要結(jié)合具體環(huán)境花費(fèi)不少時(shí)間。
最終解決方案是結(jié)合了當(dāng)下比較流行的Docker技術(shù),通過(guò)對(duì)Container的管理,完成了服務(wù)的自動(dòng)發(fā)布。其實(shí)這個(gè)方案也間接的說(shuō)明了一些問(wèn)題,比如微服務(wù)架構(gòu)和云計(jì)算、智能運(yùn)維等是都密不可分的。
作為“微服務(wù)”架構(gòu)的倡導(dǎo)者,普元與InfoQ共同主辦了PWorld 軟件架構(gòu)&平臺(tái)創(chuàng)新大會(huì),將于5月26日和6月11日分別在北京和上海舉行,今年的大會(huì)以“大平臺(tái)、微應(yīng)用”為主題,顧偉也將在大會(huì)上分享“基于微服務(wù)的開(kāi)放彈性企業(yè)應(yīng)用架構(gòu)”.