云計(jì)算是一種基于互聯(lián)網(wǎng)的計(jì)算方式,通過(guò)這種方式,共享的軟硬件資源和信息可以按需求提供給計(jì)算機(jī)各種終端和其他設(shè)備。簡(jiǎn)而言之,云計(jì)算是網(wǎng)絡(luò)資源配置的一種方式。
在過(guò)去的幾年中,得到云計(jì)算支持的新興技術(shù)得到廣泛應(yīng)用。在某些情況下,這些新技術(shù)是由云計(jì)算供應(yīng)商專門為云計(jì)算而創(chuàng)建的。例如無(wú)服務(wù)器技術(shù)。在其他情況下,新興技術(shù)由于與云計(jì)算之間的緊密聯(lián)系而得到了發(fā)展。例如機(jī)器學(xué)習(xí)和人工智能。
無(wú)論哪種情況,這些新興技術(shù)不僅正在改變?cè)朴?jì)算,而且正在改變更多的企業(yè)計(jì)算領(lǐng)域——從零售到媒體再到制藥等行業(yè)。
云計(jì)算領(lǐng)域的新興技術(shù)
這些新興技術(shù)(基于云計(jì)算或與云計(jì)算高度可互操作)為人們帶來(lái)了巨大的希望,但它們也增加了云計(jì)算的復(fù)雜性。
1.容器技術(shù)
容器這個(gè)詞,當(dāng)你第一眼看它或許腦子里是這東西:瓶瓶罐罐、裝水、裝其他東西的玩意。
不管是什么,總的來(lái)說(shuō),容器給人第一印象就是——“裝”。
那今天我們要說(shuō)的容器技術(shù)是怎么一個(gè)概念呢?其實(shí),IT里的容器技術(shù)是英文單詞Linux Container的直譯。container這個(gè)單詞有集裝箱、容器的含義(主要偏集裝箱意思)。不過(guò),在中文環(huán)境下,咱們要交流要傳授,如果翻譯成“集裝箱技術(shù)” 就有點(diǎn)拗口,所以結(jié)合中國(guó)人的吐字習(xí)慣和文化背景,更喜歡用容器這個(gè)詞。不過(guò),如果要形象的理解Linux Container技術(shù)的話,還是得念成集裝箱會(huì)比較好。
我們知道,海邊碼頭里的集裝箱是運(yùn)載貨物用的,它是一種按規(guī)格標(biāo)準(zhǔn)化的鋼制箱子。集裝箱的特色,在于其格式劃一,并可以層層重疊,所以可以大量放置在特別設(shè)計(jì)的遠(yuǎn)洋輪船中(早期航運(yùn)是沒有集裝箱概念的,那時(shí)候貨物雜亂無(wú)章的放,很影響出貨和運(yùn)輸效率)。有了集裝箱,那么這就更加快捷方便的為生產(chǎn)商提供廉價(jià)的運(yùn)輸服務(wù)。
因此,IT世界里借鑒了這一理念。早期,大家都認(rèn)為硬件抽象層基于hypervisor的虛擬化方式可以最大程度上提供虛擬化管理的靈活性。各種不同操作系統(tǒng)的虛擬機(jī)都能通過(guò)hypervisor(KVM、XEN等)來(lái)衍生、運(yùn)行、銷毀。然而,隨著時(shí)間推移,用戶發(fā)現(xiàn)hypervisor這種方式麻煩越來(lái)越多。為什么?因?yàn)閷?duì)于hypervisor環(huán)境來(lái)說(shuō),每個(gè)虛擬機(jī)都需要運(yùn)行一個(gè)完整的操作系統(tǒng)以及其中安裝好的大量應(yīng)用程序。但實(shí)際生產(chǎn)開發(fā)環(huán)境里,我們更關(guān)注的是自己部署的應(yīng)用程序,如果每次部署發(fā)布我都得搞一個(gè)完整操作系統(tǒng)和附帶的依賴環(huán)境,那么這讓任務(wù)和性能變得很重和很低下。
基于上述情況,人們就在想,有沒有其他什么方式能讓人更加的關(guān)注應(yīng)用程序本身,底層多余的操作系統(tǒng)和環(huán)境我可以共享和復(fù)用?換句話來(lái)說(shuō),那就是我部署一個(gè)服務(wù)運(yùn)行好后,我再想移植到另外一個(gè)地方,我可以不用再安裝一套操作系統(tǒng)和依賴環(huán)境。這就像集裝箱運(yùn)載一樣,我把貨物一輛蘭博基尼跑車(好比開發(fā)好的應(yīng)用APP),打包放到一容器集裝箱里,它通過(guò)貨輪可以輕而易舉的從上海碼頭(CentOS7.2環(huán)境)運(yùn)送到紐約碼頭(Ubuntu14.04環(huán)境)。而且運(yùn)輸期間,我的蘭博基尼(APP)沒有受到任何的損壞(文件沒有丟失),在另外一個(gè)碼頭卸貨后,依然可以完美風(fēng)騷的賽跑(啟動(dòng)正常)。
Linux Container容器技術(shù)的誕生,就解決了IT世界里“集裝箱運(yùn)輸”的問(wèn)題。Linux Container(簡(jiǎn)稱LXC)它是一種內(nèi)核輕量級(jí)的操作系統(tǒng)層虛擬化技術(shù)。Linux Container主要由Namespace和Cgroup兩大機(jī)制來(lái)保證實(shí)現(xiàn)。
那么Namespace和Cgroup是什么呢?剛才我們上面提到了集裝箱,集裝箱的作用當(dāng)然是可以對(duì)貨物進(jìn)行打包隔離了,不讓A公司的貨跟B公司的貨混在一起,不然卸貨就分不清楚了。那么Namespace也是一樣的作用,做隔離。光有隔離還沒用,我們還需要對(duì)貨物進(jìn)行資源的管理。同樣的,航運(yùn)碼頭也有這樣的管理機(jī)制:貨物用什么樣規(guī)格大小的集裝箱,貨物用多少個(gè)集裝箱,貨物哪些優(yōu)先運(yùn)走,遇到極端天氣怎么暫停運(yùn)輸服務(wù)怎么改航道等等... 通用的,與此對(duì)應(yīng)的Cgroup就負(fù)責(zé)資源管理控制作用,比如進(jìn)程組使用CPU/MEM的限制,進(jìn)程組的優(yōu)先級(jí)控制,進(jìn)程組的掛起和恢復(fù)等等。
2014年春季,容器技術(shù)應(yīng)運(yùn)而生。而容器可以使軟件開發(fā)更快、更敏捷,業(yè)界對(duì)此充滿了好奇。容器并不是什么淅事物,但是廣為人知的Docker使它們易于使用。
與Vmware公司推出的虛擬機(jī)(必須容納整個(gè)操作系統(tǒng))不同,容器將多個(gè)軟件包裝在一個(gè)軟件容器中,就像一個(gè)輕巧的“手提箱”。容器本身承載軟件,并且僅包含所需的基本要素(庫(kù)和配置),其文件在計(jì)算環(huán)境之間移動(dòng)。
這種新技術(shù)迅速得以采用。Rightscale 公司的“Cloud of State 2019”調(diào)查報(bào)告指出,66%的企業(yè)采用了容器技術(shù)。同樣,60%的公司采用了谷歌公司開發(fā)的容器管理系統(tǒng)Kubernetes。
考慮到云計(jì)算環(huán)境的眾多元素,產(chǎn)生了各種各樣的新興技術(shù)不足為奇。
2.無(wú)服務(wù)器技術(shù)
根據(jù)MartinFowler.com的定義,無(wú)服務(wù)器體系結(jié)構(gòu)是指主要依賴于第三方服務(wù)(稱為后端即服務(wù)或"BaaS")的應(yīng)用程序或在臨時(shí)容器中運(yùn)行的自定義代碼(功能即服務(wù)或"FaaS")。
如上說(shuō)述,如果你沒有維護(hù)或管理自己的基礎(chǔ)架構(gòu)來(lái)運(yùn)行應(yīng)用程序,并根據(jù)使用情況付費(fèi)(或者不付費(fèi)),同時(shí)從供應(yīng)商那里自動(dòng)獲得所需級(jí)別的高可用性、可擴(kuò)展性和容錯(cuò)性,那么你就正在運(yùn)行一個(gè)無(wú)服務(wù)器的應(yīng)用程序。作為在無(wú)服務(wù)器環(huán)境中運(yùn)行應(yīng)用程序的所有者,你可以將所有的精力放在應(yīng)用程序業(yè)務(wù)邏輯上,而不必?fù)?dān)心其運(yùn)行的基礎(chǔ)架構(gòu)以及應(yīng)用程序周圍的其他非功能性需求。
在2014年AWS公司推出無(wú)服務(wù)器架構(gòu)之前,云計(jì)算客戶猜測(cè)了他們需要配置并相應(yīng)付費(fèi)的計(jì)算資源級(jí)別。而使用無(wú)服務(wù)器時(shí),AWS公司只向客戶收取實(shí)際使用的費(fèi)用。
更重要的是,使用無(wú)服務(wù)器,云計(jì)算提供商可以處理維護(hù)和擴(kuò)展方面的基礎(chǔ)設(shè)施難題,從而使客戶(尤其是開發(fā)人員)更輕松、更快地構(gòu)建其基于云計(jì)算的系統(tǒng)。
無(wú)服務(wù)器也被稱為功能即服務(wù),允許應(yīng)用程序在云平臺(tái)更快、更高效地運(yùn)行。
無(wú)服務(wù)器會(huì)是未來(lái)嗎?
在回答這個(gè)問(wèn)題之前,我建議你先去看一下AWS的產(chǎn)品頁(yè)面,如果你仔細(xì)看,那么你會(huì)發(fā)現(xiàn)大約有100個(gè)"服務(wù)產(chǎn)品",涵蓋了從開發(fā)到部署和維護(hù)的整個(gè)軟件開發(fā)生命周期。
如何看待AWS的愿景?我堅(jiān)信,它將改變世界,使我們能夠在解決方案的基礎(chǔ)上全面開發(fā),測(cè)試,部署和維護(hù)我們的應(yīng)用程序。
如果你現(xiàn)在還沒有準(zhǔn)備好,那么可以去看看過(guò)去兩年中AWS服務(wù)的增長(zhǎng)情況,他們正在迅速擴(kuò)大自己的版圖,并從基礎(chǔ)架構(gòu)角度提升其服務(wù)范圍,以涵蓋軟件生命周期過(guò)程中幾乎所有的要求。當(dāng)然,其中一些服務(wù)還沒有完全完成(其中很少是在過(guò)去兩個(gè)月內(nèi)發(fā)布的),并且完全可以替代內(nèi)部產(chǎn)品。但是,在未來(lái)的2 - 3年內(nèi),他們將確保在為云應(yīng)用的開發(fā)、部署和維護(hù)提供服務(wù)。
那么,這些云服務(wù)提供商在哪里進(jìn)行軟件開發(fā)和維護(hù)?他們的目標(biāo)是以無(wú)服務(wù)器的方式來(lái)覆蓋所有可能的情況,并將他們的客戶放在一個(gè)舒適的地帶,以確保他們只需要關(guān)注他們的業(yè)務(wù)邏輯,并能夠充分發(fā)揮其潛力。
3.微服務(wù)
更新復(fù)雜的大型軟件可能是一個(gè)緩慢而繁瑣的過(guò)程。微服務(wù)在2012年開始風(fēng)靡一時(shí)。
微服務(wù)將笨重的整體應(yīng)用程序分解為許多更小的、聯(lián)合的服務(wù)或“模塊”。它使用模塊化方法,由團(tuán)隊(duì)根據(jù)需要更新模塊,獨(dú)立于整個(gè)龐大的應(yīng)用程序(業(yè)內(nèi)人士表示,這個(gè)模塊需要足夠小,這樣一個(gè)可以由規(guī)模較小的團(tuán)隊(duì)就可以對(duì)其進(jìn)行更新)。
微服務(wù)可以持續(xù)交付最新更新的軟件。與無(wú)服務(wù)器一樣,它允許應(yīng)用程序以云計(jì)算時(shí)代所需的更快速度發(fā)展。
4.DevOps
說(shuō)到持續(xù)交付,DevOps的重點(diǎn)是持續(xù)集成(CI)/持續(xù)交付(CD)。DevOps于2012年開始獲得強(qiáng)勁發(fā)展,它既是一種技術(shù)轉(zhuǎn)變,也是一種文化轉(zhuǎn)變。其目標(biāo)是通過(guò)開發(fā)團(tuán)隊(duì)和運(yùn)營(yíng)團(tuán)隊(duì)這兩個(gè)世界觀截然不同的團(tuán)隊(duì)相互交流來(lái)加速軟件開發(fā)。
開發(fā)人員通常采用的是藝術(shù)家的思維,他們擅長(zhǎng)創(chuàng)造新鮮事物。而運(yùn)營(yíng)團(tuán)隊(duì)與其相反,通常更注重指標(biāo)和電子表格。但是,如果開發(fā)團(tuán)隊(duì)和運(yùn)營(yíng)團(tuán)隊(duì)可以一起工作(因此稱為“DevOps”),那么最重要的軟件更新可以更快推出,從而獲得競(jìng)爭(zhēng)優(yōu)勢(shì)。
5.物聯(lián)網(wǎng)(IoT)
在云計(jì)算時(shí)代,似乎一切設(shè)備都可以連接到互聯(lián)網(wǎng)。從智能手表到家用電器,從無(wú)人駕駛汽車到監(jiān)控?cái)z像頭。物聯(lián)網(wǎng)這個(gè)龐大的傳感器網(wǎng)絡(luò)將產(chǎn)生海量的數(shù)據(jù)。
物聯(lián)網(wǎng)和云計(jì)算通常都是獨(dú)立運(yùn)行,但這兩種技術(shù)有著不可分割的聯(lián)系。
首先,正如許多新技術(shù)一樣,物聯(lián)網(wǎng)廠商不能從頭開始構(gòu)建所有內(nèi)容,因?yàn)樘嘿F且太復(fù)雜。物聯(lián)網(wǎng)廠商因此決定采用云計(jì)算技術(shù)。而每個(gè)主要的云計(jì)算提供產(chǎn)都提供物聯(lián)網(wǎng)解決方案。
此外,有關(guān)物聯(lián)網(wǎng)(也稱為“邊緣計(jì)算”)的關(guān)鍵問(wèn)題是:將在哪里處理所有數(shù)據(jù)?對(duì)于許多企業(yè)而言,其答案是“在我們的云平臺(tái)中”。由云計(jì)算提供商的超大規(guī)模服務(wù)器提供支持的基于云計(jì)算的數(shù)據(jù)分析可提供出色的數(shù)據(jù)處理能力。
6.人工智能(AI)
人工智能技術(shù)在塑造未來(lái)將發(fā)揮巨大作用。憑借其可以獨(dú)立于工作人員協(xié)助而學(xué)習(xí)的軟件的承諾,人工智能成為一款強(qiáng)大的工具,其巨大的潛力使所有其他工具相形見絀。
同樣,當(dāng)人工智能獨(dú)立于云計(jì)算的存在時(shí),人工智能對(duì)于企業(yè)來(lái)說(shuō)是非常復(fù)雜的。因此,企業(yè)希望云計(jì)算提供商提供他們的人工智能解決方案,其中包括機(jī)器學(xué)習(xí)和深度學(xué)習(xí)工具。
在云計(jì)算的早期發(fā)展中,云計(jì)算提供基本計(jì)算和存儲(chǔ)的能力是偉大的民主化者。云計(jì)算提供商為中小型公司提供可以租用的數(shù)據(jù)中心,從而與大型廠商開展競(jìng)爭(zhēng)。
隨著云計(jì)算的成熟,基于云計(jì)算的人工智能使得一些具有遠(yuǎn)見卓識(shí)的中小型公司可以實(shí)現(xiàn)自己的愿景,就像財(cái)力雄厚的大公司一樣。