初學(xué)者,你可以怎樣學(xué)習(xí)云計(jì)算技術(shù)?
2010年被行業(yè)稱為“中國(guó)云計(jì)算元年”。從2010年至今的10年間,云計(jì)算、大數(shù)據(jù)、人工智能、區(qū)塊鏈、物聯(lián)網(wǎng)、工業(yè)互聯(lián)網(wǎng)等多個(gè)技術(shù)都得到產(chǎn)業(yè)界、學(xué)術(shù)界和政界所認(rèn)同。
ABCD是人工智能、區(qū)塊鏈、云計(jì)算、大數(shù)據(jù)四種新興技術(shù)、容易記住的英文縮寫。但是實(shí)際上,這幾個(gè)技術(shù)在國(guó)內(nèi)接受并應(yīng)用流行的先后順序應(yīng)該是CDBA,先是云計(jì)算、然后是大數(shù)據(jù)、再次是區(qū)塊鏈、最后是人工智能AI。
區(qū)塊鏈技術(shù)前幾年比較熱,這兩年熱度有所下降,主要不是技術(shù)的問(wèn)題,而是基于區(qū)塊鏈技術(shù)的比特幣等數(shù)字貨幣的投資熱度下降,正所謂“成為比特幣,敗也比特幣”。
這些新一代信息技術(shù)當(dāng)中,云計(jì)算、大數(shù)據(jù)和人工智能可能算是個(gè)中的翹楚,一經(jīng)得到市場(chǎng)關(guān)注后,學(xué)術(shù)界、產(chǎn)業(yè)界和政府都在一起用力推動(dòng)發(fā)展,這三大技術(shù)一直都在各行各業(yè)受到格外青睞,也得到廣泛地實(shí)際應(yīng)用。
近幾年,教育部還新增了“數(shù)據(jù)科學(xué)和大數(shù)據(jù)技術(shù)”、“人工智能”兩個(gè)新工科專業(yè)。相應(yīng)地,很多高校也紛紛在計(jì)算機(jī)等學(xué)院開設(shè)這兩個(gè)新的專業(yè),或者獨(dú)立成立“大數(shù)據(jù)學(xué)院”、“人工智能學(xué)院”。
這里,我將分別介紹這些相關(guān)技術(shù),讓計(jì)算機(jī)大學(xué)生乃至對(duì)這些技術(shù)感興趣的同學(xué)們可以了解這些技術(shù)的基本知識(shí),幫助他們?cè)谧鲞x擇的時(shí)候能夠避免由于不了解而盲目。就算是不從事相關(guān)技術(shù)的工作,了解了解新興技術(shù)知識(shí)也是不錯(cuò)的。
云計(jì)算概念
業(yè)界普遍接受美國(guó)國(guó)家標(biāo)準(zhǔn)和技術(shù)局NIST關(guān)于云計(jì)算的定義:云計(jì)算是一種能夠通過(guò)網(wǎng)絡(luò)以便利的、按需付費(fèi)的方式獲取計(jì)算資源(包括網(wǎng)絡(luò)、服務(wù)器、存儲(chǔ)、應(yīng)用和服務(wù)等),這些資源來(lái)自于一個(gè)共享的、可配置的資源池,并能夠以最省力和無(wú)人干預(yù)的方式獲取和釋放。
上述這段關(guān)于云計(jì)算的文字描述還是不好理解,所以,NIST進(jìn)一步解釋了云計(jì)算的定義,指出云計(jì)算具有5個(gè)基本特征、4種部署模型和3種服務(wù)模型。為了方便理解和記憶,我把它們簡(jiǎn)稱為“543云框架”。
5大基本特征
按需的自助服務(wù)、共享的資源池、可度量的服務(wù)、快速的伸縮性和泛在的網(wǎng)絡(luò)訪問(wèn)。在上述五大關(guān)鍵特征中,“泛在的網(wǎng)絡(luò)訪問(wèn)”是硬件基礎(chǔ),“按需的自助服務(wù)”是目的,“快速的伸縮性、可度量的服務(wù)和共享的資源池”這三個(gè)特征是軟件實(shí)現(xiàn)的管理手段。
4種部署模型
私有云(機(jī)構(gòu)自己建立的云,如企業(yè)私有云)、公有云(面向普通大眾的云,如阿里云)、社區(qū)云(要協(xié)作處理共同問(wèn)題的多個(gè)機(jī)構(gòu)共建共享的云)和混合云(由私有云、公有云或社區(qū)云中的兩種或以上組合而成的云)。
3種服務(wù)模型
IaaS(基礎(chǔ)設(shè)施即服務(wù)):IaaS向用戶提供計(jì)算、存儲(chǔ)、網(wǎng)絡(luò)和其它基礎(chǔ)計(jì)算資源服務(wù),讓用戶可以在這些基礎(chǔ)設(shè)施上面部署和運(yùn)行包括操作系統(tǒng)和應(yīng)用程序在內(nèi)的任何軟件。在IaaS服務(wù)模型里,客戶不需要管理和維護(hù)底層基礎(chǔ)設(shè)施,但能管理和維護(hù)基礎(chǔ)設(shè)施之上的操作系統(tǒng)、部署的應(yīng)用程序以及一些網(wǎng)絡(luò)組件(例如,防火墻、負(fù)載均衡器等)。
IaaS服務(wù)的典型代表:Amazon公司率先推出的兩個(gè)IaaS服務(wù):Amazon Elastic Compute Cloud (EC2)提供的計(jì)算服務(wù);Amazon Simple Storage Service(S3)提供的存儲(chǔ)服務(wù);國(guó)內(nèi)的阿里云提供的云服務(wù)器ECS和云存儲(chǔ)等。
PaaS(平臺(tái)即服務(wù)):PaaS向用戶提供創(chuàng)建、測(cè)試、部署各種應(yīng)用的平臺(tái)。一般來(lái)說(shuō),這個(gè)平臺(tái)由服務(wù)提供商在云基礎(chǔ)設(shè)施IaaS上搭建,提供用戶使用平臺(tái)支持的編程語(yǔ)言和工具來(lái)創(chuàng)建自己的應(yīng)用。在PaaS平臺(tái)上,用戶不需要管理和維護(hù)包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)和存儲(chǔ)設(shè)備在內(nèi)的底層云基礎(chǔ)設(shè)施, 但是,用戶仍需要管理應(yīng)用程序以及應(yīng)用程序的執(zhí)行環(huán)境。
PaaS服務(wù)的典型代表:支持用Python和Java開發(fā)Web應(yīng)用的Google App Engine;支持.Net應(yīng)用的Microsoft Windows Azure;阿里云的應(yīng)用托管和微服務(wù)管理的云原生PaaS平臺(tái)企業(yè)級(jí)分布式應(yīng)用服務(wù)EDAS。
SaaS(軟件即服務(wù)): SaaS提供給客戶的服務(wù)是運(yùn)行在云平臺(tái)上的完整的應(yīng)用軟件,客戶通過(guò)各種簡(jiǎn)單客戶界面(主要是網(wǎng)頁(yè)瀏覽器)來(lái)獲得該軟件服務(wù)(如基于Web的電子郵件系統(tǒng)等)。除了一些特定的應(yīng)用程序可能需要做些簡(jiǎn)單配置之外,用戶不再需要管理和維護(hù)底層的云基礎(chǔ)設(shè)施(包括網(wǎng)絡(luò)、服務(wù)器、操作系統(tǒng)、存儲(chǔ)設(shè)備)和執(zhí)行在基礎(chǔ)設(shè)施之上的整個(gè)軟件應(yīng)用。
一般來(lái)說(shuō),軟件即服務(wù)SaaS是基于PaaS平臺(tái)服務(wù)或IaaS基礎(chǔ)設(shè)施服務(wù)來(lái)構(gòu)建的,利用這兩種底層服務(wù)來(lái)提供基于互聯(lián)網(wǎng)的完整的應(yīng)用軟件服務(wù)。
實(shí)際上,PaaS是將軟件研發(fā)的平臺(tái)以SaaS模式提交給用戶的一種服務(wù)。因此,PaaS也是SaaS模式的一種應(yīng)用。IaaS和PaaS的出現(xiàn)可以加快SaaS的發(fā)展,尤其是加快SaaS應(yīng)用的開發(fā)部署速度。
對(duì)普通用戶來(lái)說(shuō),這種SaaS服務(wù)模式是最便捷、最友好的。通過(guò)IE等網(wǎng)頁(yè)瀏覽器,用戶就能使用原本要在個(gè)人電腦(或企業(yè)服務(wù)器)上安裝才能使用的軟件,并且軟件功能是和以前完全一樣的。這樣一來(lái),避免了以往一直困擾用戶的軟件故障或者版本更新升級(jí)的系統(tǒng)維護(hù)問(wèn)題。
SaaS最著名的服務(wù)就是SalesForce的在線客戶關(guān)系管理軟件CRM。阿里云的釘釘辦公,騰訊云的騰訊會(huì)議也都屬于比較流行的SaaS服務(wù)。
云計(jì)算相關(guān)技術(shù)和平臺(tái)
KVM等虛擬化技術(shù)
云計(jì)算的核心技術(shù)基礎(chǔ)是虛擬化技術(shù)。虛擬化一般分為硬件級(jí)虛擬化和操作系統(tǒng)級(jí)虛擬化。硬件級(jí)虛擬化是運(yùn)行在硬件之上的虛擬化技術(shù),它的管理軟件也就是我們通常說(shuō)的hypervisor 或virtual machine monitor。
主流的硬件級(jí)虛擬化技術(shù)包括KVM、Xen、Hyper-V和VMWare。前兩種是開源技術(shù),后兩種分別是微軟和VMware公司的私有技術(shù),并沒(méi)有對(duì)外公開。就KVM和Xen這兩種開源虛擬化技術(shù)來(lái)說(shuō),KVM的流行程度更高,有興趣研究虛擬化技術(shù)的同學(xué),專注KVM技術(shù)即可。
操作系統(tǒng)級(jí)虛擬化是運(yùn)行在操作系統(tǒng)之上的,它模擬的是運(yùn)行在操作系統(tǒng)上的多個(gè)不同進(jìn)程,并將其封裝在一個(gè)密閉的容器里面,也稱為容器化技術(shù)。Docker 正是容器虛擬化中目前最流行的一種實(shí)現(xiàn)。本文介紹的云計(jì)算技術(shù)只涉及硬件級(jí)虛擬化技術(shù),Docker等容器化技術(shù)以后再介紹。
Libvirt
libvirt是一套免費(fèi)、開源的C函數(shù)庫(kù),其旨在為包括KVM在內(nèi)的各種虛擬化工具提供一套方便、可靠的編程API,支持與C,C++,Ruby,Python等多種主流開發(fā)語(yǔ)言的綁定。
libvirt提供了一個(gè)統(tǒng)一的接口API來(lái)管理虛擬機(jī)和其他虛擬化功能,如存儲(chǔ)和網(wǎng)絡(luò)接口管理,可以管理KVM、Xen、VMware,QEMU和其他多種虛擬化技術(shù)。這些API在云計(jì)算的解決方案中廣泛使用。
當(dāng)前主流Linux平臺(tái)上默認(rèn)的虛擬化管理工具virt-manager(圖形化),virt-install(命令行模式)等均基于libvirt開發(fā)而成。主流開源IaaS平臺(tái)Openstack也是基libvirt來(lái)管理各種虛擬化技術(shù)的。
開源IaaS平臺(tái)Openstack
OpenStack是美國(guó)國(guó)家航空航天局NASA和Rackspace合作研發(fā)的一個(gè)開源云計(jì)算基礎(chǔ)設(shè)施軟件,便于組織和企業(yè)自行建立和提供基礎(chǔ)設(shè)施IaaS云服務(wù)。
OpenStack項(xiàng)目核心包括云計(jì)算Nova、云存儲(chǔ)Swift和鏡像服務(wù)Glance三個(gè)最核心的子項(xiàng)目,三個(gè)子項(xiàng)目之間相互獨(dú)立,可以單獨(dú)安裝。其中,云計(jì)算Nova與亞馬遜EC2類似,主要在于提供自動(dòng)創(chuàng)建和管理虛擬服務(wù)器。云存儲(chǔ)Swift可以創(chuàng)建大量的、可擴(kuò)展的對(duì)象存儲(chǔ),能夠存儲(chǔ)TB甚至PB級(jí)的數(shù)據(jù),像業(yè)界知名的亞馬遜S3。OpenStack鏡像服務(wù)Glance提供云計(jì)算Nova虛擬機(jī)鏡像的發(fā)現(xiàn)、存儲(chǔ)和檢索功能。
實(shí)際上,國(guó)內(nèi)很多企業(yè)建立的企業(yè)內(nèi)部的私有云,乃至對(duì)普通大眾提供服務(wù)的公有云基本都是基于OpenStack云平臺(tái)擴(kuò)展開發(fā)而來(lái)的。這一點(diǎn),有點(diǎn)像國(guó)內(nèi)各大手機(jī)廠商的手機(jī)操作系統(tǒng)基本都是來(lái)自開源的Android系統(tǒng)一樣。
怎樣學(xué)習(xí)云計(jì)算技術(shù)
對(duì)于計(jì)算機(jī)大學(xué)生來(lái)說(shuō),學(xué)習(xí)新技術(shù)(包括云計(jì)算技術(shù))的基本套路都是一樣的,我稱之為“學(xué)習(xí)三部曲”:先是學(xué)習(xí)了解相關(guān)理論知識(shí);然后是深入研究典型的開源框架;最后就是基于開源框架來(lái)動(dòng)手實(shí)踐。
下面以學(xué)習(xí)云計(jì)算技術(shù)為例來(lái)具體講解這個(gè)“學(xué)習(xí)三部曲”。
1、學(xué)習(xí)云計(jì)算相關(guān)理論知識(shí)
可以查閱網(wǎng)上的資料或書籍,學(xué)習(xí)相關(guān)理論知識(shí)。起碼要了解云計(jì)算的相關(guān)概念,比如前面講到的“543云框架”等。
云計(jì)算的核心技術(shù)基礎(chǔ);我們要知道,任何新技術(shù)都是有技術(shù)傳承的,不可能是憑空出來(lái)的東西,云計(jì)算的虛擬化技術(shù)也是在之前的技術(shù)基礎(chǔ)上發(fā)展而來(lái)的。
云計(jì)算的應(yīng)用場(chǎng)景;任何新技術(shù)都不是萬(wàn)靈丹,它有優(yōu)勢(shì)也會(huì)有劣勢(shì),它能解決一些問(wèn)題也會(huì)對(duì)一些問(wèn)題束手無(wú)策。所以,要了解云計(jì)算的最佳應(yīng)用場(chǎng)景,只有這樣,才能最大化發(fā)揮云計(jì)算技術(shù)的威力。
而云計(jì)算的最佳應(yīng)用場(chǎng)景是什么呢?通俗地講,就是“四大場(chǎng)景”:大機(jī)器量、大數(shù)據(jù)量、大計(jì)算量、大訪問(wèn)量。也就是在服務(wù)器比較多的環(huán)境、數(shù)據(jù)比較多的環(huán)境、計(jì)算量比較多的環(huán)境、服務(wù)訪問(wèn)比較多的環(huán)境。如果在這“四大場(chǎng)景”中有些什么問(wèn)題用其他技術(shù)不好解決,你就可以考慮考慮云計(jì)算技術(shù)了。
2、深入研究典型的開源框架
現(xiàn)在的計(jì)算機(jī)技術(shù)發(fā)展,一般都伴隨著很多開源框架或平臺(tái)的出現(xiàn)。對(duì)于計(jì)算機(jī)專業(yè)人士來(lái)看,往往是先應(yīng)用一些開源的東東,用的人多了,然后才出現(xiàn)一個(gè)流行的新技術(shù)術(shù)語(yǔ)(比如云計(jì)算、大數(shù)據(jù)、區(qū)塊鏈)。回過(guò)頭一看,以前出現(xiàn)的好多東西最后都?xì)w于這個(gè)新技術(shù)術(shù)語(yǔ)之下。比如,網(wǎng)格計(jì)算、效能計(jì)算、高性能計(jì)算HPC等都統(tǒng)稱到“云計(jì)算”。
云計(jì)算相關(guān)的開源技術(shù)很多,從個(gè)人建議來(lái)看,初學(xué)者從KVM、libvirt和Openstack這三個(gè)入手就可以了。KVM是集成到linux操作系統(tǒng)中的虛擬化技術(shù)。libvirt可以用來(lái)管理單機(jī)上的虛擬機(jī),當(dāng)然除了KVM虛擬機(jī)外,Xen等其他虛擬化技術(shù)它都能管理。Openstack則是IaaS平臺(tái)級(jí)的框架,可以管理服務(wù)器集群環(huán)境下的虛擬化技術(shù)。
3、基于開源框架來(lái)動(dòng)手實(shí)踐
云計(jì)算的理論知識(shí)也掌握了,KVM、libvirt和Openstack這些開源技術(shù)都研究過(guò),要想深入理解和掌握云計(jì)算技術(shù),現(xiàn)在就是要?jiǎng)邮謱?shí)踐。
基于libvirt的API做一個(gè)簡(jiǎn)單的虛擬機(jī)管理系統(tǒng),類似linux操作系統(tǒng)上面的virt-manager一樣的東西?;蛘呋贠penstack的API開發(fā)一個(gè)簡(jiǎn)單的IaaS平臺(tái)。
不管是單機(jī)版的虛擬機(jī)管理系統(tǒng),還是服務(wù)器集群的IaaS平臺(tái),動(dòng)手實(shí)踐的話,實(shí)現(xiàn)幾個(gè)基本功能就差不多了,包括創(chuàng)建虛擬機(jī)、刪除虛擬機(jī)、查詢虛擬機(jī)狀態(tài)等等。當(dāng)然,能夠參照市場(chǎng)上的云計(jì)算產(chǎn)品(比如阿里云),實(shí)現(xiàn)更多功能那就更好,隨著越多功能的實(shí)現(xiàn),你對(duì)云計(jì)算技術(shù)的了解就會(huì)越深入。
在這里,我要敲黑板、敲黑板、敲黑板,重要的事情說(shuō)三遍!
動(dòng)手實(shí)踐是學(xué)習(xí)新技術(shù)的不二法門。但是,很多或者說(shuō)絕大多數(shù)計(jì)算機(jī)大學(xué)生(可能有學(xué)校差異)在這一點(diǎn)上卻表現(xiàn)欠佳、差強(qiáng)人意。
他們喜歡看書掌握理論知識(shí),總覺(jué)得理論準(zhǔn)備不足。殊不知,理論準(zhǔn)備永遠(yuǎn)都不足。成功的做法是:現(xiàn)在就開始動(dòng)手! 通過(guò)動(dòng)手實(shí)踐和不斷的犯錯(cuò)來(lái)真正掌握這門技術(shù)。
害怕犯錯(cuò),才是很多計(jì)算機(jī)大學(xué)生不敢動(dòng)手實(shí)踐的心理暗示。在實(shí)踐出真知的世界里我們知道:只要我們活著,就會(huì)一直犯錯(cuò)。那些有意避免犯錯(cuò)的人,他們的世界毋庸置疑將變得越來(lái)越小。丘吉爾說(shuō)過(guò)“成功是能夠熱情不怠地從一個(gè)失敗走向另一個(gè)失敗的能力”。成功人士把他們的犯錯(cuò)看成未來(lái)的投資,他們從錯(cuò)誤中學(xué)習(xí)和成長(zhǎng)。