![]() |
新聞中心
當(dāng)前位置:網(wǎng)站首頁 > 新聞中心
相輔相成 不可分割:談云計算、大數(shù)據(jù)和人工智能(二)
云計算不光管資源,也要管應(yīng)用有了 IaaS,實現(xiàn)了資源層面的彈性就夠了嗎?顯然不是,還有應(yīng)用層面的彈性。
這里舉個例子:比如說實現(xiàn)一個電商的應(yīng)用,平時十臺機器就夠了,雙十一需要一百臺。你可能覺得很好辦啊,有了 IaaS,新創(chuàng)建九十臺機器就可以了啊。
但 90 臺機器創(chuàng)建出來是空的,電商應(yīng)用并沒有放上去,只能讓公司的運維人員一臺一臺的弄,需要很長時間才能安裝好的。
雖然資源層面實現(xiàn)了彈性,但沒有應(yīng)用層的彈性,依然靈活性是不夠的。有沒有方法解決這個問題呢?
人們在 IaaS 平臺之上又加了一層,用于管理資源以上的應(yīng)用彈性的問題,這一層通常稱為 PaaS(Platform As A Service)。
這一層往往比較難理解,大致分兩部分:一部分筆者稱為“你自己的應(yīng)用自動安裝”,一部分筆者稱為“通用的應(yīng)用不用安裝”。自己的應(yīng)用自動安裝:比如電商應(yīng)用是你自己開發(fā)的,除了你自己,其他人是不知道怎么安裝的。像電商應(yīng)用,安裝時需要配置支付寶或者微信的賬號,才能使別人在你的電商上買東西時,付的錢是打到你的賬戶里面的,除了你,誰也不知道。
所以安裝的過程平臺幫不了忙,但能夠幫你做得自動化,你需要做一些工作,將自己的配置信息融入到自動化的安裝過程中方可。
比如上面的例子,雙十一新創(chuàng)建出來的 90 臺機器是空的,如果能夠提供一個工具,能夠自動在這新的 90 臺機器上將電商應(yīng)用安裝好,就能夠?qū)崿F(xiàn)應(yīng)用層面的真正彈性。
例如 Puppet、Chef、Ansible、Cloud Foundary 都可以干這件事情,最新的容器技術(shù) Docker 能更好的干這件事情。通用的應(yīng)用不用安裝:所謂通用的應(yīng)用,一般指一些復(fù)雜性比較高,但大家都在用的,例如數(shù)據(jù)庫。幾乎所有的應(yīng)用都會用數(shù)據(jù)庫,但數(shù)據(jù)庫軟件是標(biāo)準(zhǔn)的,雖然安裝和維護比較復(fù)雜,但無論誰安裝都是一樣。這樣的應(yīng)用可以變成標(biāo)準(zhǔn)的 PaaS 層的應(yīng)用放在云平臺的界面上。當(dāng)用戶需要一個數(shù)據(jù)庫時,一點就出來了,用戶就可以直接用了。
有人問,既然誰安裝都一個樣,那我自己來好了,不需要花錢在云平臺上買。當(dāng)然不是,數(shù)據(jù)庫是一個非常難的東西,光 Oracle 這家公司,靠數(shù)據(jù)庫就能賺這么多錢。買 Oracle 也是要花很多錢的。
然而大多數(shù)云平臺會提供 MySQL 這樣的開源數(shù)據(jù)庫,又是開源,錢不需要花這么多了。
但維護這個數(shù)據(jù)庫,卻需要專門招一個很大的團隊,如果這個數(shù)據(jù)庫能夠優(yōu)化到能夠支撐雙十一,也不是一年兩年能夠搞定的。
比如您是一個做單車的,當(dāng)然沒必要招一個非常大的數(shù)據(jù)庫團隊來干這件事情,成本太高了,應(yīng)該交給云平臺來做這件事情。
專業(yè)的事情專業(yè)的人來做,云平臺專門養(yǎng)了幾百人維護這套系統(tǒng),您只要專注于您的單車應(yīng)用就可以了。
要么是自動部署,要么是不用部署,總的來說就是應(yīng)用層你也要少操心,這就是 PaaS 層的重要作用。雖說腳本的方式能夠解決自己的應(yīng)用的部署問題,然而不同的環(huán)境千差萬別,一個腳本往往在一個環(huán)境上運行正確,到另一個環(huán)境就不正確了。
而容器是能更好地解決這個問題。容器是 Container,Container 另一個意思是集裝箱,其實容器的思想就是要變成軟件交付的集裝箱。集裝箱的特點:一是封裝,二是標(biāo)準(zhǔn)。在沒有集裝箱的時代,假設(shè)將貨物從 A 運到 B,中間要經(jīng)過三個碼頭、換三次船。
每次都要將貨物卸下船來,擺得七零八落,然后搬上船重新整齊擺好。因此在沒有集裝箱時,每次換船,船員們都要在岸上待幾天才能走。有了集裝箱以后,所有的貨物都打包在一起了,并且集裝箱的尺寸全部一致,所以每次換船時,一個箱子整體搬過去就行了,小時級別就能完成,船員再也不用上岸長時間耽擱了。
這是集裝箱“封裝”、“標(biāo)準(zhǔn)”兩大特點在生活中的應(yīng)用。那么容器如何對應(yīng)用打包呢?還是要學(xué)習(xí)集裝箱。首先要有個封閉的環(huán)境,將貨物封裝起來,讓貨物之間互不干擾、互相隔離,這樣裝貨卸貨才方便。好在 Ubuntu 中的 LXC 技術(shù)早就能做到這一點。
封閉的環(huán)境主要使用了兩種技術(shù):看起來是隔離的技術(shù),稱為 ?Namespace,也即每個 Namespace 中的應(yīng)用看到的是不同的 IP 地址、用戶空間、程號等。
用起來是隔離的技術(shù),稱為 Cgroups,也即明明整臺機器有很多的 ?CPU、內(nèi)存,而一個應(yīng)用只能用其中的一部分。所謂的鏡像,就是將你焊好集裝箱的那一刻,將集裝箱的狀態(tài)保存下來,就像孫悟空說:“定”,集裝箱里面就定在了那一刻,然后將這一刻的狀態(tài)保存成一系列文件。
這些文件的格式是標(biāo)準(zhǔn)的,誰看到這些文件都能還原當(dāng)時定住的那個時刻。將鏡像還原成運行時的過程(就是讀取鏡像文件,還原那個時刻的過程),就是容器運行的過程。
有了容器,使得 PaaS 層對于用戶自身應(yīng)用的自動部署變得快速而優(yōu)雅。
|