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