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