雲端計算到底是怎麼玩的?
本文授權轉自 | 鮮棗課堂
“雲端計算”這個詞,相信大家都非常熟悉了。
作為IT行業的熱門技術,它頻繁出現在各大媒體的新聞報導中。BAT這樣的網際網路企業,也經常把它掛在嘴邊。
相信很多人都想學習雲端計算,跟上技術潮流。如果對雲端計算有一定了解的話,應該會或多或少地聽到這些名詞——OpenStack、Hypervisor、KVM、Docker、K8S...
這些名詞,全部都屬於雲端計算的範疇。
對於自學的初學者來說,想要理解這些名詞的具體含義,還有它們之間的關係,並不是一件容易的事情。
雖然網際網路上有很多的資料,但是雜亂無章、晦澀難懂,對新人很不友好,容易讓人暈頭轉向,甚至打退堂鼓。
所以,小棗君今天這篇文章,作為雲端計算的入門第一課,將給大家做一個通俗易懂的宏觀介紹,重點解釋最主要的幾個名詞,和它們之間的關係,希望對大家入門有所幫助。
什麼是雲端計算
在介紹那些古怪名詞之前,我先簡單介紹一下雲端計算。
以前電腦被發明的時候,還沒有網路,每個電腦(PC),就是一個單機。
這臺單機,包括CPU、記憶體、硬碟、顯示卡等硬體。使用者在單機上,安裝作業系統和應用軟體,完成自己的工作。
後來,有了網路(Network),單機與單機之間,可以交換資訊,協同工作。
再後來,單機效能越來越強,就有了伺服器(Server)。人們發現,可以把一些伺服器集中起來,放在機房裡,然後讓使用者透過網路,去訪問和使用機房裡的計算機資源。
再再後來,小型網路變成了大型網路,就有了網際網路(Internet)。小型機房變成了大型機房,就有了IDC(Internet Data Center,網際網路資料中心)。
當越來越多的計算機資源和應用服務(Application,例如看網頁,下電影)被集中起來,就變成了——“雲端計算(Cloud Computing)”。無數的大型機房,就成了“雲端”。
雲端計算
是不是覺得太簡單?別急,開始深入。
雲端計算的道理是簡單的,說白了,就是把計算機資源集中起來,放在網路上。但是,雲端計算的實現方式,就複雜了。
舉個例子,如果你只是在公司小機房擺了一個伺服器,開個FTP下載服務,然後用於幾個同事之間的電影分享,當然是很簡單的。
如果是“雙11”的淘寶購物節,全球幾十億使用者訪問阿里巴巴的淘寶網站,單日幾十PB(1PB=1024TB=1024×1024GB)的訪問量,每秒幾百GB的流量……這個,就不是幾根網線幾臺伺服器能解決的了。
需要設計一個超大容量、超高併發(同時訪問)、超快速度、超強安全的雲端計算系統,才能滿足業務平穩執行的要求。
這才是雲端計算的複雜之處。
剛才說了,我們把計算機資源,放在雲端。這個計算機資源,實際上,分為好幾種層次:
第一層次,是最底層的硬體資源,主要包括CPU(計算資源),硬碟(儲存資源),還有網路卡(網路資源)等。
第二層次,要高階一些,我不打算直接使用CPU、硬碟、網路卡,我希望你把作業系統(例如Windows、Linux)裝好,把資料庫軟體裝好,我再來使用。
第三層次,更高階一些,你不但要裝好作業系統這些基本的,還要把具體的應用軟體裝好,例如FTP服務端軟體、線上影片服務端軟體等,我可以直接使用服務。
這三種層次,就是大家經常聽到的IaaS、Paas、SaaS。
SaaS: Software-as-a-Service(軟體即服務)
PaaS: Platform-as-a-Service(平臺即服務)
IaaS: Infrastructure-as-a-Service(基礎設施即服務)
再補一張圖,可能更直觀:
目前主流的雲端計算服務提供商,例如亞馬遜AWS、阿里雲、華為雲,說白了,都是為大家提供以上三個層次的雲資源。你想要什麼,它們就提供什麼。
繼續,繼續。
這麼多樣化多層次的雲端計算服務,阿里、華為們又是怎麼提供的呢?
難道說,人工安排?——
如果你要八核CPU、16GB記憶體、500GB硬碟的伺服器,阿里臨時安排工程師幫你組裝?如果你要裝CentOS 7.2(一種類Linux作業系統),MySQL 5.5.60(一種資料庫系統),阿里也臨時讓工程師幫你安裝配置?
這顯然是不可能的,耗不起人力,也等不起時間。
於是,就有了各種軟體和平臺,負責對資源進行呼叫和管理。
什麼是虛擬化
如果要對物理資源進行管理,第一步,就是“虛擬化”。
虛擬化是雲端計算的基礎。簡單來說,虛擬化就是在一臺物理伺服器上,執行多臺“虛擬伺服器”。這種虛擬伺服器,也叫虛擬機器(VM,Virtual Machine)。
從表面來看,這些虛擬機器都是獨立的伺服器,但實際上,它們共享物理伺服器的CPU、記憶體、硬體、網路卡等資源。
物理機,通常稱為“宿主機(Host)”。虛擬機器,則稱為“客戶機(Guest)”。
誰來完成物理資源虛擬化的工作呢?
就是大名鼎鼎的 Hypervisor 。
Hypervisor,漢譯過來是“超級監督者”,也叫做VMM(Virtual Machine Monitor,虛擬機器監視器)。它不是一款具體的軟體,而是一類軟體的統稱。
Hypervisor分為兩大類:
第一類,hypervisor直接執行在物理機之上。虛擬機器執行在hypervisor之上。第二類,物理機上安裝正常的作業系統(例如Linux或Windows),然後在正常作業系統上安裝hypervisor,生成和管理虛擬機器。
像VMware、KVM、Xen、Virtual Box,都屬於Hypervisor。
VMware大家應該很熟悉,就是VMware Workstation。學習Linux的話,很多人都是在windows系統下安裝WMware,然後建立Linux虛擬機器。
但是,真正厲害的,是 KVM(kernel-based virtual machine,基於Linux核心的虛擬機器)。它是目前最熱門最受追捧的虛擬化方案。
KVM這樣的Hypervisor軟體,實際上是提供了一種虛擬化能力,模擬CPU的執行,更為底層。但是它的使用者互動並不良好,不方便使用。
於是,為了更好地管理虛擬機器,就需要OpenStack這樣的雲管理平臺。
關於OpenStack,我之前曾經介紹過(連結)。它有點像個商店,負責管理商品(計算資源、儲存資源、網路資源等),賣給使用者,但它本身不製造商品(不具備虛擬化能力),它的商品,來自於KVM。當然,如果不用KVM,也可以用Xen等其它hypervisor。
OpenStack的管理介面,比命令列好多了吧?
請記住,上面所說的幾個概念,包括VM、KVM、OpenStack等,都主要屬於IaaS(基礎設施即服務)。這個不難理解吧?
容器 VS 虛擬機器
繼續往下說。
那麼,容器、Docker、K8S,又是什麼呢?
根據前文所說的虛擬化方式,人們在使用一段時間後發現,它存在一些問題:
不同的使用者,有時候只是希望執行各自的一些簡單程式,跑一個小程式。為了不相互影響,就要建立虛擬機器。如果建虛擬機器,顯然浪費就會有點大,而且操作也比較複雜,花費時間也會比較長。
而且,有的時候,想要遷移自己的服務程式,就要遷移整個虛擬機器。顯然,遷移過程也會很複雜。
有沒有辦法更靈活快速一些呢?
有,這就引入了“容器(Container)”。
容器也是虛擬化,但是屬於“輕量級”的虛擬化。它的目的和虛擬機器一樣,都是為了創造“隔離環境”。但是,它又和虛擬機器有很大的不同——虛擬機器是作業系統級別的資源隔離,而容器本質上是程式級的資源隔離。
而大家常聽說的Docker,就是建立容器的工具,是應用容器引擎。
Docker的中文意思,就是碼頭工人。而它的LOGO,就是一隻鯨魚揹著很多貨櫃箱。
相比於傳統的虛擬機器,Docker的優勢很明顯,它啟動時間很快,是秒級,而且對資源的利用率很高(一臺主機可以同時執行幾千個Docker容器)。此外,它佔的空間很小,虛擬機器一般要幾GB到幾十GB,而容器只需要MB級甚至KB級。
除了Docker對容器進行建立之外,我們還需要一個工具,對容器進行編排。
這個工具,就是K8S。
K8S,就是Kubernetes,中文意思是舵手或導航員。Kubernetes這個單詞很長,所以大家把中間8個字母縮寫成8,就成了K8S。
K8S是一個容器叢集管理系統,主要職責是容器編排(Container Orchestration)——啟動容器,自動化部署、擴充套件和管理容器應用,還有回收容器。
簡單來說,K8S有點像容器的保姆。它負責管理容器在哪個機器上執行,監控容器是否存在問題,控制容器和外界的通訊,等等。
透過下面這張K8S系統結構圖,就能夠看出K8S和容器之間的關係。
除了K8S之外,還有很多種容器管理平臺,例如Compose,Marathon,Swarm,Mesos等。
Docker和K8S,關注的不再是基礎設施和物理資源,而是應用層,所以,就屬於PaaS。明白了吧?
好啦,以上就是今天的內容。再說下去,估計很多人又要暈了。
正如文章開頭所說,今天主要是介紹KVM、Hypervisor、OpenStack、Docker、K8S這些名詞的意思,它們在雲端計算系統中的位置,以及它們之間的關係。雲端計算涉及到大量的需求。同一個需求,會有很多不同的技術來實現。同一個技術,往往又有多個不同的廠家互相競爭。所以,概念和名詞就會特別多,發展變化也會很快。
不管怎麼說,梳理清楚最關鍵的名詞概念,是學好雲端計算的第一步。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/31545808/viewspace-2375577/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 雲端計算:雲端計算是怎麼分類的?
- 雲端計算教程入門影片:雲端計算到底是什麼?
- 雲端計算到底是什麼?我這樣看待雲端計算
- 雲端計算開發是什麼?雲端計算的就業前途怎麼樣?就業
- 雲端計算的未來怎麼發展?怎麼學習雲端計算相關技術?
- 怎麼進入雲端計算這個行業?新手怎麼學習雲端計算?行業
- 雲端計算就業前景怎麼樣?linux雲端計算怎麼開始學習就業Linux
- 短期怎麼學會雲端計算?新手學習雲端計算的規劃
- 小白怎麼學習雲端計算?雲端計算學習大綱
- 學習雲端計算怎麼入門,如何學習雲端計算?
- 雲端計算到底是個啥?運維必須掌握雲端計算的理由是什麼?運維
- 雲端計算實現物聯網的核心,雲端計算應該怎麼學?
- 學習雲端計算怎麼樣?雲服務和雲端計算有什麼區別?
- 雲端計算的就業前途怎麼樣?這套雲端計算教程限時領就業
- 學習雲端計算怎麼樣?大資料比雲端計算更好嗎?大資料
- 雲端計算運維工程師怎麼樣?學習雲端計算前景如何?運維工程師
- 雲端計算前景如何?大專學歷學習雲端計算怎麼樣?
- 【雲端計算小知識】什麼是雲端計算?雲端計算特點是什麼?
- 雲端計算現在前景如何?怎麼轉型成為雲端計算工程師?工程師
- 小白怎麼學習雲端計算?2020最新雲端計算學習路線圖
- Linux運維對雲端計算有影響嗎?雲端計算需求怎麼樣?Linux運維
- 什麼叫雲端計算?雲端計算通俗解釋
- 什麼是雲端計算雲端計算能幹什麼?雲端計算學習筆記工具素材筆記
- 雲端計算管理的功能是什麼?Linux雲端計算學習Linux
- 雲端計算學習路線圖講解:想學雲端計算怎麼入門?
- 雲端計算教程學習入門影片課件:怎麼組建雲端計算中心?
- 雲端計算教程學習入門影片課件:雲端計算中心怎麼選址?
- 學習雲端計算怎麼樣?未來10年雲端計算發展前景如何?
- 怎麼才能找到適合你的雲端計算方案
- 學雲端計算與大資料前景如何?雲端計算是怎麼分類的?大資料
- 一文看懂雲端計算和大資料到底是什麼!大資料
- 雲端計算和Linux什麼關係?linux雲端計算Linux
- 雲端計算開發教程,雲端計算能幹什麼?
- 什麼叫做雲端計算?學習雲端計算先要理解
- 最通俗的解釋下雲端計算,雲端計算的核心是什麼?
- 零基礎學雲端計算怎麼樣?2020年雲端計算學習路線
- 初學者怎麼入手學習雲端計算?雲端計算學習路線圖分享
- 零基礎學習雲端計算怎麼樣?雲端計算有哪些就業方向就業