我今天主要講的內(nèi)容,首先對微服務(wù)架構(gòu)做一下簡單介紹,以及微服務(wù)架構(gòu)怎么實(shí)現(xiàn)的。著重介紹在Azure上對微服務(wù)架構(gòu)多元化支持,以此為例來介紹一下開放的Azure云平臺。
首先什么是微服務(wù)架構(gòu),這個概念并不是新的概念了,還要感謝面向?qū)ο蟠髱煹鹊纫恍┤说奈恼伦屗兊昧餍衅饋?。但是更重要的是還是現(xiàn)在的時機(jī),因?yàn)樵朴嬎阋呀?jīng)被越來越多的人接受了,大家一開始想我的應(yīng)約要設(shè)計成什么樣子,才能最大化利用到云的特性,比如云的特性就是高度擴(kuò)展性,因?yàn)樵频馁Y源幾乎是無止境,無窮的。首先基于微服務(wù)架構(gòu)應(yīng)用是由多個服務(wù)組成,服務(wù)之間用輕量級的協(xié)議進(jìn)行溝通,比如說HTTP,或者谷歌的GRPC等等,每個服務(wù)就像一個獨(dú)立產(chǎn)品,可以獨(dú)立開發(fā)測試,獨(dú)立進(jìn)行演變,甚至可以用不同技術(shù),不同語言來開發(fā)。這樣的應(yīng)用如果部署到云上,每個服務(wù)都可以根據(jù)需求進(jìn)行獨(dú)立的橫向擴(kuò)展,如果一個服務(wù)實(shí)例發(fā)生問題,我們也可以很快創(chuàng)建新的實(shí)例頂上。所以整個應(yīng)用容錯性和可靠性也會增強(qiáng),這跟像我們傳統(tǒng)的應(yīng)用,所有的邏輯都綁定在一起,必須要一起部署,一起升級,一起擴(kuò)展,相比之下基于微服務(wù)架構(gòu)的應(yīng)用靈活性就會大很多。另外自動化運(yùn)維也是微服務(wù)架構(gòu)很重要的特色,因?yàn)樵萍墑e的應(yīng)用比想象很多服務(wù),很多不同的容器,如果還靠手工運(yùn)維是非常難以想象的,所以現(xiàn)在容器技術(shù)變得很流行,其中一個原因就是能夠讓運(yùn)維變得更加高效,這也是為什么微服務(wù)架構(gòu)現(xiàn)在變得可行的一個非常重要的因素。
實(shí)現(xiàn)微服務(wù)架構(gòu)的方式也很多,首先最直接的就是容器化,比如我們有一個現(xiàn)有應(yīng)用想搬到云上去,我們可以把它當(dāng)中需要橫向擴(kuò)展的,比較獨(dú)立的部分先剝離出來,放在容器中運(yùn)行。運(yùn)行幾個容器很容易,因?yàn)镈ocker已經(jīng)提供了很好的工具,可是云級別的應(yīng)用就需要跨很多機(jī)器、服務(wù)、容器的情況下,最好還是用容器編排引擎來幫我們管理資源。另外我們也可以使用規(guī)范化微服務(wù)框架,但是需要我們用標(biāo)準(zhǔn)來編寫服務(wù),好處是它可以幫助我們管理微服務(wù)生命周期。另外還有一些我們甚至可以不寫完整服務(wù),只需要寫一些重要的業(yè)務(wù)邏輯就可以了。有這么多種方式,至于選哪一種還是要看應(yīng)用的場景,一個應(yīng)用里面的微服務(wù)很可能用不同服務(wù)來實(shí)現(xiàn),因?yàn)檫@些服務(wù)可能就是不同團(tuán)隊(duì)獨(dú)立開發(fā)的。接下來我們重點(diǎn)看一看在Azure云服務(wù)平臺上對微服務(wù)有什么支持。
Azure云平臺是微軟公有云平臺,在中國是由21世紀(jì)互聯(lián)運(yùn)營的,它是一個全功能很強(qiáng)大的云平臺,從底層的虛擬機(jī)層多上層多層的PaaS服務(wù),從最基礎(chǔ)的運(yùn)算到更高級更復(fù)雜的物聯(lián)網(wǎng)、大數(shù)據(jù)、人工智能、機(jī)器學(xué)習(xí)、區(qū)塊鏈等等都可以支持,我們著重看一下對于微服務(wù)架構(gòu)的支持。剛才講過實(shí)現(xiàn)微服務(wù)架構(gòu)最基本的就是通過容器化,而且最好用容器編排引擎幫助我們管理資源。現(xiàn)在流行的容器編排引擎主要是三種,Apache Mesos、Docker Swarm、Kubernetes,Azure容器是把這三種都集中了起來。Azure容器很重要的就是可以幫我們編排一套我們需要用的集群,因?yàn)槭止ぞ幣诺脑捠呛苈闊┑?,編排好以后我們可以利用它來發(fā)布服務(wù)。另外我們還開源一個項(xiàng)目叫acs—engine,通過它我們可以精準(zhǔn)定制我們想要要的容器編排集群的配置。PaaS服務(wù)也是基于這個項(xiàng)目在此之上包裝而成的,而且有新的功能我們都會先在這個項(xiàng)目里實(shí)現(xiàn),然后再集成到安卓服務(wù)容器里面去,比如我們現(xiàn)在很多客戶希望我們支撐Docker swarm到集群服務(wù),可是這個還沒有,但是我們畝以通過Azure容器來部署基于Docker swarm的服務(wù)。
剛才提到的這三種容器編排引擎都是屬于基礎(chǔ)類型的,用戶需要明確知道我需要在上面部署容器,所以要對容器很了解。好處是用戶沒有最大的控制,還有一類容器平臺就把底層資源層變得更加抽象化,比如我只需要聲明我的應(yīng)用需要什么樣的配置,最終需要達(dá)到什么樣的狀態(tài)等等。比如我需要多少內(nèi)存,需要運(yùn)行多少實(shí)例,聯(lián)通我的應(yīng)用一起遞交給平臺,剩下的就由平臺運(yùn)行它就可以了。Cloud Foundry就屬于這個平臺,它在微服務(wù)算是元老了,很多企業(yè)用它來統(tǒng)一企業(yè)內(nèi)部運(yùn)營部署的環(huán)境,它也支持多種云平臺和私有云平臺。Cloud Foundry和剛才提到的容器編排引擎,類似的地方是有很好的分層設(shè)計,跟底下集成的層,我們只要實(shí)現(xiàn)了接口層就能夠把像Cloud Foundry項(xiàng)目跟云平臺集成起來。而且這些都是透明的,剛才提到的幾個編排引擎也是一樣的。Cloud Foundry作為開源項(xiàng)目,是由Cloud foundry基金會負(fù)責(zé)的。它的最大支持就是對Spring Cloud的支持,它給Cloud foundry帶來的就是更強(qiáng)大微服務(wù)的平臺支持,Cloud foundry跟安卓的集成也是我們團(tuán)隊(duì)負(fù)責(zé)的,我們在上海,有興趣的話我們可以做線下的交流。