1. 程式人生 > >繆瑾:“從多元化的微服務支援看開放的Azure” – 運維派

繆瑾:“從多元化的微服務支援看開放的Azure” – 運維派

由工業和資訊化部指導,中國資訊通訊研究院主辦,業界知名組織雲端計算開源產業聯盟(OSCAR)承辦的2017全球雲端計算開源大會於4月19日-20日在北京國家會議中心順利召開。本文為本屆大會嘉賓分享的PPT內容,敬請瀏覽。

嘉賓介紹:繆瑾

公司職務:微軟首席研發經理

個人簡介:繆瑾目前帶領微軟中國伺服器與工具事業部開源技術團隊,致力於推進微軟對各種開源技術的支援,包括Linux/FreeBSD,容器及編排引擎,Cloud Foundry等。之前她在微軟帶領和參與的專案還包括OData (開源的開放資料RESTAPI標準),微軟支付平臺,WCF和WF及Visual Studio工具。

大會演講速記

我今天主要講的內容,首先對微服務架構做一下簡單介紹,以及微服務架構怎麼實現的。著重介紹在Azure上對微服務架構多元化支援,以此為例來介紹一下開放的Azure雲平臺。

微服務架構

首先什麼是微服務架構,這個概念並不是新的概念了,還要感謝面向物件大師等等一些人的文章讓它變得流行起來。但是更重要的是還是現在的時機,因為雲端計算已經被越來越多的人接受了,大家一開始想我的應約要設計成什麼樣子,才能最大化利用到雲的特性,比如雲的特性就是高度擴充套件性,因為雲的資源幾乎是無止境,無窮的。

首先基於微服務架構應用是由多個服務組成,服務之間用輕量級的協議進行溝通,比如說HTTP,或者谷歌的GRPC等等,每個服務就像一個獨立產品,可以獨立開發測試,獨立進行演變,甚至可以用不同技術,不同語言來開發。這樣的應用如果部署到雲上,每個服務都可以根據需求進行獨立的橫向擴充套件,如果一個服務例項發生問題,我們也可以很快建立新的例項頂上。

所以整個應用容錯性和可靠性也會增強,這跟像我們傳統的應用,所有的邏輯都繫結在一起,必須要一起部署,一起升級,一起擴充套件,相比之下基於微服務架構的應用靈活性就會大很多。

另外自動化運維也是微服務架構很重要的特色,因為雲級別的應用比想象很多服務,很多不同的容器,如果還靠手工運維是非常難以想象的,所以現在容器技術變得很流行,其中一個原因就是能夠讓運維變得更加高效,這也是為什麼微服務架構現在變得可行的一個非常重要的因素。

實現微服務架構的方式也很多,首先最直接的就是容器化,比如我們有一個現有應用想搬到雲上去,我們可以把它當中需要橫向擴充套件的,比較獨立的部分先剝離出來,放在容器中執行。執行幾個容器很容易,因為Docker已經提供了很好的工具,可是雲級別的應用就需要跨很多機器、服務、容器的情況下,最好還是用容器編排引擎來幫我們管理資源。

另外我們也可以使用規範化微服務框架,但是需要我們用標準來編寫服務,好處是它可以幫助我們管理微服務生命週期。另外還有一些我們甚至可以不寫完整服務,只需要寫一些重要的業務邏輯就可以了。

有這麼多種方式,至於選哪一種還是要看應用的場景,一個應用裡面的微服務很可能用不同服務來實現,因為這些服務可能就是不同團隊獨立開發的。接下來我們重點看一看在Azure雲服務平臺上對微服務有什麼支援。

Azure

Azure雲平臺是微軟公有云平臺,在中國是由21世紀互聯運營的,它是一個全功能很強大的雲平臺,從底層的虛擬機器層多上層多層的PaaS服務,從最基礎的運算到更高階更復雜的物聯網、大資料、人工智慧、機器學習、區塊鏈等等都可以支援,我們著重看一下對於微服務架構的支援。

Azure容器

剛才講過實現微服務架構最基本的就是通過容器化,而且最好用容器編排引擎幫助我們管理資源。現在流行的容器編排引擎主要是三種,Apache  Mesos、Docker  Swarm、Kubernetes,Azure容器是把這三種都集中了起來。

Azure容器很重要的就是可以幫我們編排一套我們需要用的叢集,因為手工編排的話是很麻煩的,編排好以後我們可以利用它來發布服務。另外我們還開源一個專案叫acs—engine,通過它我們可以精準定製我們想要要的容器編排叢集的配置。

PaaS服務也是基於這個專案在此之上包裝而成的,而且有新的功能我們都會先在這個專案裡實現,然後再整合到安卓服務容器裡面去,比如我們現在很多客戶希望我們支撐Docker  swarm到叢集服務,可是這個還沒有,但是我們畝以通過Azure容器來部署基於Docker  swarm的服務。

剛才提到的這三種容器編排引擎都是屬於基礎型別的,使用者需要明確知道我需要在上面部署容器,所以要對容器很瞭解。好處是使用者沒有最大的控制,還有一類容器平臺就把底層資源層變得更加抽象化,比如我只需要宣告我的應用需要什麼樣的配置,最終需要達到什麼樣的狀態等等。比如我需要多少記憶體,需要執行多少例項,聯通我的應用一起遞交給平臺,剩下的就由平臺執行它就可以了。

Cloud Foundry

Cloud  Foundry就屬於這個平臺,它在微服務算是元老了,很多企業用它來統一企業內部運營部署的環境,它也支援多種雲平臺和私有云平臺。

Cloud  Foundry和剛才提到的容器編排引擎,類似的地方是有很好的分層設計,跟底下整合的層,我們只要實現了介面層就能夠把像Cloud  Foundry專案跟雲平臺整合起來。而且這些都是透明的,剛才提到的幾個編排引擎也是一樣的。Cloud  Foundry作為開源專案,是由Cloud  foundry基金會負責的。它的最大支援就是對Spring  Cloud的支援,它給Cloud  foundry帶來的就是更強大微服務的平臺支援,Cloud  foundry跟安卓的整合也是我們團隊負責的,我們在上海,有興趣的話我們可以做線下的交流。

Red Hat Openshift

我們同時也支援Red  Hat  Openshift,它經常被拿來和Cloud  foundry做比較,因為它們都屬於同類似的平臺。Red Hat  openshift跟微軟也是很好的合作伙伴,所以我們沒有偏向性,把選擇交給客戶。

在Azure上我們有一個產品叫Service  Fabric,它也是一個久經考驗的微服務平臺,它最早是為微軟PaaS設計的。它能夠支援無狀態和有狀態的服務,包括基於Azure模式的有狀態服務,如果使用它就要遵循它的程式設計規範,如果無狀態服務必須要整合Service  Fabric,好處是可以幫助我們管理生命週期,另外它還有滾動升級,自動擴充套件等等功能。

Service  Fabric也支援公有云,我們還可以把它用在私有云和其他雲平臺上,所以是一個真正的跨平臺系統。Service  Fabric最近也開源他們的平臺了,我們也期待他們越來越多的把這個平臺開源。

Azure Functions

最後介紹一下,把這個基礎設施抽象到極致的Azure  Functions,它是無伺服器的PaaS服務,我們不需要寫完整的服務,只需要寫一些基本的業務程式碼就可以了,所以從運維成本來講非常低。我們寫的程式碼是事件處理程式碼,因為現實生活中很多場景是有現實發生了,比如收到一個郵件、請求,有些資料盜了等等我們需要做處理。

微服務

而且它還可以跟多種服務進行繫結,包括Azure自己的服務,像我們的儲存,也可以跟外界很多服務進行繫結。我們可以用它把很多事件觸發以及處理串在一起,寫一個很複雜的業務鏈。從技術上講它是基於Azure的一個開源專案。

微軟開源

通過剛才的介紹,希望我們看到在Azure雲平臺上,對微服務的支援是非常豐富,非常多元化的,從最基礎的容器編排引擎到更加抽象一些的容器平臺等等我們都有支援,應該能夠滿足絕大多數的雲應用場景。另外通過對微服務支援,希望大家能夠感受到Azure這個平臺本身也是非常開放的平臺。近年來微軟在開源上面步伐也是越邁越快,越邁越大,具體我們開源策略是怎樣的呢?首先是支援,比如虛擬化平臺一定要支援的跟Windows一樣好,比如我們開發工具一定要支援多種語音。

另外是整合,因為現在開源社群有很多很優秀的方案,我們也沒有必要閉門造車。另外是釋出,我們已經把很多自己的產品釋出成開源了,這些會越來越多。最後是參與到現有的專案中去,我們也加入了很多的重要的Linux開源組織,我們希望跟這些社群合作,一方面我們也想向社群學習,另一方面,一起把這個專案做好,一起擁抱開源。

Azure

所以我們可以很有信心地說,現在在我們的Azure雲平臺上,對開源的支援,從各個層面,各個領域都是能夠做到不錯的,現在在中國的Azure雲上面,我們已經過半的虛擬機器都是執行Linux,所以Azure早就過了只專注於Windows的時代了。

最後我們不僅在軟體上要擁抱開源,我們現在在硬體上也想把開源帶到新的高度,2014年我們加入Open  Compute  Project,這個組織主要目的是共享下一代雲端計算中心硬體的設計,去年我們釋出了一個專案叫Project  Olympus。

另外我們今年3月份宣佈將在雲資料中心支援ARM伺服器。應該說挑戰是無處不在的,沒有挑戰怎麼會有收穫呢。這是我們微軟雲科技的微訊號,希望大家有興趣可以關注一下,謝謝大家!

文章來自微信公眾號:雲端計算開源產業聯盟