天天看點

五分鐘學後端技術:一篇文章告訴你什麼是雲計算!

作者:劉超

轉自公衆号【劉超的通俗雲計算】

什麼是雲計算

早在十年前,市場上就出現了很多和雲計算相關的崗位,當時正是雲計算技術最火熱的時代,不管是BAT還是華為等企業都開始布局雲計算,于是OpenStack研發、容器研發、底層開發等相關崗位相應地也越來越多,雖然這幾年大資料和AI的風頭已經完全壓過了雲計算,但是這一門技術仍然在現如今的技術體系中占有很重要的位置。那麼,到底什麼是雲計算,就是我們每一個要學習雲計算技術的朋友要了解的事情了,根據百度百科的介紹

大資料(big data),IT行業術語,是指無法在一定時間範圍内用正常軟體工具進行捕捉、管理和處理的資料集合,是需要新處理模式才能具有更強的決策力、洞察發現力和流程優化能力的海量、高增長率和多樣化的資訊資産。

在維克托·邁爾-舍恩伯格及肯尼斯·庫克耶編寫的《大資料時代》 [1] 中大資料指不用随機分析法(抽樣調查)這樣捷徑,而采用所有資料進行分析處理。大資料的5V特點(IBM提出):Volume(大量)、Velocity(高速)、Variety(多樣)、Value(低價值密度)、Veracity(真實性)。 [2]

思維導圖

雲計算的發展史

實體機時代

雲計算的整個過程,用一個詞來講就是“分久必合,合久必分”。

雲計算其實主要解決了四個方面的内容:計算,網絡,存儲,應用。前三者是資源層面的,最後是應用層面的。

計算是CPU和記憶體,為啥?1+1這個最簡單的算法是把1放在記憶體裡面,運作加法是CPU做的,做完了結果2又儲存在記憶體裡面。

網絡就是你插根網線能上網。

存儲就是你下個電影有地方放。本次讨論就是圍繞這四個部分來講的。

 在原始社會,大家最愛用的是實體裝置:

伺服器用的是實體機,例如戴爾,惠普,IBM,聯想等實體伺服器,随着硬體裝置的進步,實體伺服器越來越強大了,64核128G記憶體都算是普通配置。

網絡用的是硬體交換機和路由器,例如思科的,華為的,從1GE到10GE,現在有40GE和100GE,帶寬越來越牛。

存儲方面有的用普通的磁盤,也有了更快的SSD盤。容量從M,到G,連筆記本電腦都能配置到T,更何況磁盤陣列。

 如果部署應用直接使用實體機,看起來很爽,總有種土豪的感覺,卻又大大的缺點:

人工運維:如果你在一台伺服器上安裝軟體,把系統安裝壞了,怎麼辦?隻有重裝。當你想配置一下交換機的參數,需要序列槽連上去進行配置。當你想增加一塊磁盤,總要買一塊插進伺服器。這些都需要人工來,而且很大可能要求機房。你們公司在北五環,機房在南六環,這酸爽。

浪費資源:其實你隻想部署一個小小的網站,卻要用128G的記憶體。混着部署吧,就有隔離性的問題。

 隔離性差:你把好多的應用部署在同一台實體機上,他們之間搶記憶體,搶cpu,一個寫滿了硬碟,另一個就沒法用了,一個弄挂了核心,另一個也同時挂了,如果部署兩個相同的應用,端口還會沖突,動不動就會出錯。

 于是有了第一次合久必分的過程,叫做虛拟化。所謂虛拟化,就是把實的變成虛的。

虛拟機的誕生

實體機變為虛拟機:cpu是虛拟的,記憶體是虛拟的,核心是虛拟的,硬碟是虛拟的。

實體交換機變為虛拟交換機:網卡是虛拟的,交換機是虛拟的,帶寬也是虛拟的。

實體存儲變成虛拟存儲:多塊硬碟虛拟成一大塊。

 虛拟化很好的解決了上面的三個問題:

人工運維:虛拟機的建立和删除都可以遠端操作,虛拟機被玩壞了,删了再建一個分鐘級别的。虛拟網絡的配置也可以遠端操作,建立網卡,配置設定帶寬都是調用接口就能搞定的。

浪費資源:虛拟化了以後,資源可以配置設定的很小很小,比如1個cpu,1G記憶體,1M帶寬,1G硬碟,都可以被虛拟出來。

隔離性差:每個虛拟機有獨立的cpu, 記憶體,硬碟,網卡,不同虛拟機的應用互不幹擾。

但是虛拟化還有以下的缺點,通過虛拟化軟體建立虛拟機,需要人工指定放在哪台機器上,硬碟放在哪個儲存設備上,網絡的VLAN ID,帶寬具體的配置,都需要人工指定。是以單單使用虛拟化的運維工程師往往有一個Excel表格,有多少台機器,每台機器部署了哪些虛拟機。是以,一般虛拟化的叢集數目都不是特别的大。

在虛拟化階段,領跑者是Vmware,可以實作基本的計算,網絡,存儲的虛拟化。

當然這個世界有閉源,就有開源,有windows就有linux,有apple就有andord,有Vmware,就有Xen和KVM。在開源虛拟化方面,Xen方面Citrix做的不錯,後來Redhat在KVM發力不少。

對于網絡虛拟化,有Openvswitch,可以通過指令建立網橋,網卡,設定VLAN,設定帶寬。

對于存儲虛拟化,對于本地盤,有LVM,可以将多個硬碟變成一大塊盤,然後在裡面切出一小塊給使用者。

為了解決虛拟化階段剩餘的問題,于是有了分久必合的過程。這個過程我們可以形象的稱為池化,也就是說虛拟化已經将資源分的很細了,但是對于如此細粒度的資源靠Excel去管理,成本太高,能不能打成一個大的池,當需要資源的時候,幫助使用者自動的選擇,而非使用者指定。是以這個階段的關鍵點:排程器Scheduler。

公有雲和私有雲

于是vmware有了自己的vcloud。

于是基于Xen和KVM的私有雲平台CloudStack,後來Citrix将其收購後開源。

當這些私有雲平台在使用者的資料中心裡面賣的其貴無比,賺的盆滿缽滿的時候。有其他的公司開始了另外的選擇,這就是AWS和Google,開始了公有雲領域的探索。

AWS最初就是基于Xen技術進行虛拟化的,并且最終形成了公有雲平台。也許AWS最初隻是不想讓自己的電商領域的利潤全部交給私有雲廠商吧,于是自己的雲平台首先支撐起了自己的業務,在這個過程中,AWS自己嚴肅的使用了自己的雲計算平台,使得公有雲平台不是對于資源的配置更加友好,而是對于應用的部署更加友好,最終大放異彩。

如果我們仔細觀察就會發現,私有雲和公有雲使用的是類似的技術,卻在産品設計上是完全不同的兩種生物。私有雲廠商和公有雲廠商也擁有類似的技術,卻在産品營運上呈現出完全不同的基因。

私有雲廠商都是賣資源的,是以往往在賣私有雲平台的時候往往伴随着賣計算,網絡,儲存設備。在産品設計上,私有雲廠商往往強調又長又詳盡,但是客戶幾乎不會使用的計算,網絡,存儲的技術參數,因為這些參數可以用來和友商對标的過程中占盡優勢。私有雲的廠商幾乎沒有自己的大規模應用,是以私有雲廠商的平台做出來是給别人用的,自己不會大規模使用,于是産品往往圍繞資源展開,而不會對應用的部署友好。

公有雲的廠商往往都是有自己的大規模應用需要部署的,是以其産品的設計,可以将常見的應用部署所需要的子產品作為元件提供出來,使用者可以像拼積木一樣,拼接一個适用于自己應用的架構。公有雲廠商不必要關心各種技術參數的PK,不必關心是否開源,是否相容各種虛拟化平台,相容各種伺服器裝置,網絡裝置,儲存設備。你管我用什麼,客戶部署應用友善就好。

OpenStack的誕生

當然公有雲的第一名AWS活的很爽,第二名Rackspace就不太爽了,沒錯,網際網路行業嘛,基本上就是一家獨大。第二名如何逆襲呢?開源是很好的辦法,讓整個行業大家一起為這個雲平台出力,兄弟們,大家一起上。于是Rackspace與美國航空航天局(NASA)合作創始了開源雲平台OpenStack。OpenStack現在發展的和AWS有點像了,是以從OpenStack的子產品組成,可以看到雲計算池化的方法。

OpenStack包含哪些元件呢?

計算池化子產品Nova:OpenStack的計算虛拟化主要使用KVM,然而到底在那個實體機上開虛拟機呢,這要靠nova-scheduler。

網絡池化子產品Neutron:OpenStack的網絡虛拟化主要使用Openvswitch,然而對于每一個Openvswitch的虛拟網絡,虛拟網卡,VLAN,帶寬的配置,不需要登入到叢集上配置,Neutron可以通過SDN的方式進行配置。

存儲池化子產品Cinder:OpenStack的存儲虛拟化,如果使用本地盤,則基于LVM,使用哪個LVM上配置設定的盤,也是用過scheduler來的。後來就有了将多台機器的硬碟打成一個池的方式Ceph,則排程的過程,則在Ceph層完成。

有了OpenStack,所有的私有雲廠商都瘋了,原來VMware在私有雲市場實在賺的太多了,眼巴巴的看着,沒有對應的平台可以和他抗衡。現在有了現成的架構,再加上自己的硬體裝置,你可以想象到的所有的IT廠商的巨頭,全部加入到社群裡面來,将OpenStack開發為自己的産品,連同硬體裝置一起,殺入私有雲市場。

網易當然也沒有錯過這次風口,上線了自己的OpenStack叢集,網易蜂巢基于OpenStack自主研發了IaaS服務,在計算虛拟化方面,通過裁剪KVM鏡像,優化虛拟機啟動流程等改進,實作了虛拟機的秒級别啟動。在網絡虛拟化方面,通過SDN和Openvswitch技術,實作了虛拟機之間的高性能互訪。在存儲虛拟化方面,通過優化Ceph存儲,實作高性能雲盤。

但是網易并沒有殺進私有雲市場,而是使用OpenStack支撐起了自己的應用,這是網際網路的思維,沒錯。僅僅是資源層面彈性是不夠的,還需要開發出對應用部署友好的元件。例如資料庫,負載均衡,緩存等,這些都是應用部署必不可少的,也是網易在大規模應用實踐中,千錘百煉過的。這些元件稱為PaaS。

從IAAS到PAAS

前面一直在講IaaS層的故事,也即基礎設施即服務,基本上在談計算,網絡,存儲的事情。現在應該說說應用層的事情了。

IaaS的定義比較清楚,PaaS的定義就沒那麼清楚了,有的把資料庫,負載均衡,緩存作為PaaS服務,有的把大資料Hadoop, Spark平台作為PaaS服務,有的講應用的安裝與管理,例如Puppet, Chef, Ansible作為PaaS服務。

其實PaaS主要用于管理應用層的,我總結兩部分:一部分是你自己的應用應當自動部署,比如Puppet, Chef, Ansible, Cloud Foundry等,可以通過腳本幫你部署,一部分是你覺得複雜的通用應用不用部署,比如資料庫,緩存,大資料平台,可以在雲平台上一點即得。

要麼就是自動部署,要麼不用部署,總的來說就是應用層您也少操心,就是PaaS的作用。當然最好是都不用部署,一鍵可得,是以公有雲平台将通用的服務都做成了PaaS平台。另一些應用,是您自己開發的,除了你自己,其他人都不知道,是以您可以用工具變成自動部署。

有了PaaS最大的優點,就是可以實作應用層的彈性伸縮。比如雙十一來了,10個節點要變成100個節點,如果使用實體裝置,再買90台機器固然來不及,僅僅隻有IaaS實作資源的彈性是不夠的,再建立90台虛拟機,也是空的啊,還是需要運維人員一台一台的部署。是以有了PaaS就好了,一台虛拟機啟動後,馬上運作自動部署腳本,進行應用的安裝,90台機器自動安裝好了應用,才是真正的彈性伸縮。

當然這種部署方式也有一個問題,就是無論Puppet, Chef, Ansible把安裝腳本抽象的再好,說到底也是基于腳本的,然而應用所在的環境千差萬别,檔案路徑的差别,檔案權限的差别,依賴包的差别,應用環境的差别,Tomcat, PHP, Apache等軟體版本的差别,JDK,Python等版本的差别,是否安裝了一些系統軟體,是否占用了哪些端口,都可能造成腳本執行的不成功。是以看起來是一旦腳本寫好,就能夠快速複制了,但是一旦環境稍有改變,就需要把腳本進行新一輪的修改,測試,聯調。例如在資料中心寫好的腳本,移到AWS上就不一定直接能用,在AWS上聯調好了,遷移到Google Cloud上去也可能再會出問題。

容器的誕生

于是容器應運而生。容器是Container,Container另一個意思是集裝箱,其實容器的思想就是要變成軟體傳遞的集裝箱。集裝箱的特點,一是打包,二是标準。設想沒有集裝箱的時代,如果從A将貨物運到B,中間要經過三個碼頭,換三次船的話,每次貨物都要卸下船來,擺的七零八落,然後再換船的時候,需要重新整齊擺好,是以沒有集裝箱的時候,船員們都能夠在岸上待幾天再走。然而有了集裝箱,所有的貨物都打包在一起了,并且集裝箱的尺寸全部一緻,是以每次換船的時候,整體一個箱子搬過去就可以了,小時級别就能完成,船員再也不能上岸長時間休息了。是以設想A就是程式員,B就是使用者,貨物就是代碼及運作環境,中間的三個碼頭分别是開發,測試,上線。

假設代碼的運作環境如下:

1.        Ubuntu作業系統

2.        建立使用者hadoop

3.        下載下傳解壓縮JDK 1.7在某個目錄下

4.        将這個目錄加入JAVA_HOME和PATH的環境變量裡面

5.        将環境變量的export放在hadoop使用者的home目錄下的.bashrc檔案中

6.        下載下傳并解壓縮tomcat 7

7.        将war放到tomcat的webapp路徑下面

8.        修改tomcat的啟動參數,将Java的Heap Size設為1024M

看,一個簡單的Java網站,就需要考慮這麼多零零散散的東西,如果不打包,就需要在開發,測試,生産的每個環境上檢視保證環境的一緻,甚至要将這些環境重新搭建一遍,就像每次将貨物打散了重裝一樣麻煩,中間稍有差池,比如開發環境用了JDK 1.8,而線上是JDK 1.7,比如開發環境用了root使用者,線上需要使用hadoop使用者,都可能導緻程式的運作失敗。

容器如何對應用打包呢?還是要學習集裝箱,首先要有個封閉的環境,将貨物封裝起來,讓貨物之間互不幹擾,互相隔離,這樣裝貨卸貨才友善。好在ubuntu中的lxc技術早就能做到這一點,這裡主要使用了兩種技術,一種是看起來是隔離的技術,稱為namespace,也即每個namespace中的應用看到的是不同的IP位址,使用者空間,程序号等。另一種是用起來是隔離的,稱為cgroup,也即明明整台機器有很多的CPU,記憶體,而一個應用隻能用其中的一部分。

有了這兩項技術,集裝箱的鐵盒子我們是焊好了,接下來是決定往裡面放什麼的時候了。最簡單粗暴的方法,就是将上面清單中所有的都放到集裝箱裡面。但是這樣太大了,因為虛拟機的鏡像就是這樣的,動辄幾十G,如果你安裝一個幹幹靜靜的ubuntu作業系統,什麼都不裝,就很大了。這其實相當于把船也放到了集裝箱裡面,答案當然是NO.

是以撇下第一項作業系統,剩下的所有的加起來,也就幾百M,就輕便多了。是以一台伺服器上的容器是共享作業系統核心的,容器在不同機器之間的遷移不帶核心,這也是很多人聲稱容器是輕量級的虛拟機的原因。輕不白輕,自然隔離性就差了,一個集裝箱把船壓漏水了,所有的集裝箱一起沉。

另一個需要撇下的就是随着應用的運作而産生并儲存在本地的資料,多以檔案的形式存在,例如資料庫檔案,文本檔案。這些檔案會随着應用的運作,越來越大,如果這些資料也放在容器裡面,會讓容器變得很大,影響容器在不同環境的遷移。而且這些資料在開發,測試,線上環境之間的遷移是沒有意義的,生産環境不可能用測試環境的檔案,是以往往這些資料也是儲存在容器外面的儲存設備上。也是為什麼人們稱容器是無狀态的。

至此集裝箱焊好了,貨物也裝進去了,接下來就是如何将這個集裝箱标準化,進而在哪艘船上都能運輸。這裡的标準一個是鏡像,一個是容器的運作環境。所謂的鏡像,就是将你焊好集裝箱的那個時刻,将集裝箱的狀态儲存下來,就像孫悟空說定,集裝箱裡面就定在了那一刻,然後将這一刻的狀态儲存成一系列檔案。這些檔案的格式是标準的,誰看到這些檔案,都能還原當時定住的那個時刻。将鏡像還原成運作時的過程,就是讀取鏡像檔案,還原那個時刻的過程,也就是容器的運作的過程。除了大名鼎鼎的Docker,還有其他的容器,例如AppC,Mesos Container,都能運作容器鏡像。是以說容器不等于Docker。

總而言之,容器是輕量級的,隔離差的,适用于無狀态的,基于鏡像标準實作跨主機,跨環境的随意遷移。

有了容器,使得PaaS層對于使用者自身應用的自動部署變得快速而優雅。容器快,快在了兩方面,第一是虛拟機啟動的時候要先啟動作業系統,容器不用啟動作業系統,因為是共享核心的。第二是虛拟機啟動後使用腳本安裝應用,容器不用安裝應用,因為已經打包在鏡像裡面了。是以最終虛拟機的啟動是分鐘級别,而容器的啟動是秒級。容器咋這麼神奇。其實一點都不神奇,第一是偷懶少幹活了,第二是提前把活幹好了。

因為容器的啟動快,人們往往不會建立一個個小的虛拟機來剛剛部署應用,因為這樣太費時間了,而是建立一個大的虛拟機,然後在大的虛拟機裡面再劃分容器,而不同的使用者不共享大的虛拟機,可以實作作業系統核心的隔離。

 這又是一次合久必分的過程。由IaaS層的虛拟機池,劃分為更細粒度的容器池。

 容器的粒度更加細,管理起來更難管,甚至是手動操作難以應對的。假設你有100台實體機,其實規模不是太大,用Excel人工管理是沒問題的,但是一台上面開10台虛拟機,虛拟機的個數就是1000台,人工管理已經很困難了,但是一台虛拟機裡面開10個容器,就是10000個容器,你是不是已經徹底放棄人工運維的想法了。

是以容器層面的管理平台是一個新的挑戰,關鍵字就是自動化:

自發現:容器與容器之間的互相配置還能像虛拟機一樣,記住IP位址,然後互相配置嗎?這麼多容器,你怎麼記得住一旦一台虛拟機挂了重新開機,IP改變,應該改哪些配置,清單長度至少萬行級别的啊。是以容器之間的配置通過名稱來的,無論容器跑到哪台機器上,名稱不變,就能通路到。

自修複:容器挂了,或是程序當機了,能像虛拟機那樣,登陸上去檢視一下程序狀态,如果不正常重新開機一下麼?你要登陸萬台docker了。是以容器的程序挂了,容器就自動挂掉了,然後自動重新開機。

彈性自伸縮 Auto Scaling:當容器的性能不足的時候,需要手動伸縮,手動部署麼?當然也要自動來。

如果有了容器的管理平台,又是一次分久必合。

容器管理平台

目前火熱的容器管理平台有三大流派:

一個是Kubernetes,我們稱為段譽型。段譽(Kubernetes)的父親(Borg)武功高強,出身皇族(Google),管理過偌大的一個大理國(Borg是Google資料中心的容器管理平台)。作為大理段式後裔,段譽的武功基因良好(Kubernetes的理念設計比較完善),周圍的高手雲集,習武環境也好(Kubernetes生态活躍,熱度高),雖然剛剛出道的段譽武功不及其父親,但是隻要跟着周圍的高手不斷切磋,武功既可以飛速提升。

一個是Mesos,我們稱為喬峰型。喬峰(Mesos)的主要功夫降龍十八掌(Mesos的排程功能)獨步武林,為其他幫派所無。而且喬峰也管理過人數衆多的丐幫(Mesos管理過Tweeter的容器叢集)。後來喬峰從丐幫出來,在江湖中特例獨行(Mesos的創始人成立了公司Mesosphere)。喬峰的優勢在于,喬峰的降龍十八掌(Mesos)就是在丐幫中使用的降龍十八掌,相比與段譽初學其父的武功來說,要成熟很多。但是缺點是,降龍十八掌隻掌握在少數的幾個丐幫幫主手中(Mesos社群還是以Mesosphere為主導),其他丐幫兄弟隻能遠遠崇拜喬峰,而無法互相切磋(社群熱度不足)。

一個是Swarm,我們稱為慕容型。慕容家族(Swarm是Docker家族的叢集管理軟體)的個人功夫是非常棒的(Docker可以說稱為容器的事實标準),但是看到段譽和喬峰能夠管理的組織規模越來越大,有一統江湖的趨勢,着實眼紅了,于是開始想建立自己的慕容鮮卑帝國(推出Swarm容器叢集管理軟體)。但是個人功夫好,并不代表着組織能力強(Swarm的叢集管理能力),好在慕容家族可以借鑒段譽和喬峰的組織管理經驗,學習各家公司,以彼之道,還施彼身,使得慕容公子的組織能力(Swarm借鑒了很多前面的叢集管理思想)也在逐漸的成熟中。

雲計算方面核心技術有哪些?

作者:冰島社群-陳昊

連結:

https://www.zhihu.com/question/353443905/answer/877956605

來源:知乎

著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

雲計算是一種以資料和處理能力為中心的密集型計算模式,它融合了多項ICT技術,是傳統技術“平滑演進”的産物。其中以虛拟化技術、分布式資料存儲技術、程式設計模型、大規模資料管理技術、分布式資源管理、資訊安全、雲計算平台管理技術、綠色節能技術最為關鍵。

1、虛拟化技術

 虛拟化是雲計算最重要的核心技術之一,它為雲計算服務提供基礎架構層面的支撐,是ICT服務快速走向雲計算的最主要驅動力。可以說,沒有虛拟化技術也就沒有雲計算服務的落地與成功。随着雲計算應用的持續升溫,業内對虛拟化技術的重視也提到了一個新的高度。與此同時,我們的調查發現,很多人對雲計算和虛拟化的認識都存在誤區,認為雲計算就是虛拟化。事實上并非如此,虛拟化是雲計算的重要組成部分但不是全部。

  從技術上講,虛拟化是一種在軟體中仿真計算機硬體,以虛拟資源為使用者提供服務的計算形式。旨在合理調配計算機資源,使其更高效地提供服務。它把應用系統各硬體間的實體劃分打破,進而實作架構的動态化,實作實體資源的集中管理和使用。虛拟化的最大好處是增強系統的彈性和靈活性,降低成本、改進服務、提高資源利用效率。

  從表現形式上看,虛拟化又分兩種應用模式。一是将一台性能強大的伺服器虛拟成多個獨立的小伺服器,服務不同的使用者。二是将多個伺服器虛拟成一個強大的伺服器,完成特定的功能。這兩種模式的核心都是統一管理,動态配置設定資源,提高資源使用率。在雲計算中,這兩種模式都有比較多的應用。

2、分布式資料存儲技術

  雲計算的另一大優勢就是能夠快速、高效地處理海量資料。在資料爆炸的今天,這一點至關重要。為了保證資料的高可靠性,雲計算通常會采用分布式存儲技術,将資料存儲在不同的實體裝置中。這種模式不僅擺脫了硬體裝置的限制,同時擴充性更好,能夠快速響應使用者需求的變化。

  分布式存儲與傳統的網絡存儲并不完全一樣,傳統的網絡存儲系統采用集中的存儲伺服器存放所有資料,存儲伺服器成為系統性能的瓶頸,不能滿足大規模存儲應用的需要。分布式網絡存儲系統采用可擴充的系統結構,利用多台存儲伺服器分擔存儲負荷,利用位置伺服器定位存儲資訊,它不但提高了系統的可靠性、可用性和存取效率,還易于擴充。

  在目前的雲計算領域,Google的GFS和Hadoop開發的開源系統HDFS是比較流行的兩種雲計算分布式存儲系統。

  GFS(Google File System)技術:谷歌的非開源的GFS(GoogleFile System)雲計算平台滿足大量使用者的需求,并行地為大量使用者提供服務。使得雲計算的資料存儲技術具有了高吞吐率和高傳輸率的特點。

  HDFS(Hadoop Distributed File System)技術:大部分ICT廠商,包括Yahoo、Intel的“雲”計劃采用的都是HDFS的資料存儲技術。未來的發展将集中在超大規模的資料存儲、資料加密和安全性保證、以及繼續提高I/O速率等方面。

3、程式設計模式

  從本質上講,雲計算是一個多使用者、多任務、支援并發處理的系統。高效、簡捷、快速是其核心理念,它旨在通過網絡把強大的伺服器計算資源友善地分發到終端使用者手中,同時保證低成本和良好的使用者體驗。在這個過程中,程式設計模式的選擇至關重要。雲計算項目中分布式并行程式設計模式将被廣泛采用。

  分布式并行程式設計模式創立的初衷是更高效地利用軟、硬體資源,讓使用者更快速、更簡單地使用應用或服務。在分布式并行程式設計模式中,背景複雜的任務處理和資源排程對于使用者來說是透明的,這樣使用者體驗能夠大大提升。MapReduce是目前雲計算主流并行程式設計模式之一。MapReduce模式将任務自動分成多個子任務,通過Map和Reduce兩步實作任務在大規模計算節點中的高度與配置設定。

  MapReduce是Google開發的java、Python、C++程式設計模型,主要用于大規模資料集(大于1TB)的并行運算。MapReduce模式的思想是将要執行的問題分解成Map(映射)和Reduce(化簡)的方式,先通過Map程式将資料切割成不相關的區塊,配置設定(排程)給大量計算機處理,達到分布式運算的效果,再通過Reduce程式将結果彙整輸出。

4、大規模資料管理

  處理海量資料是雲計算的一大優勢。那麼如何處理則涉及到很多層面的東西,是以高效的資料處理技術也是雲計算不可或缺的核心技術之一。對于雲計算來說,資料管理面臨巨大的挑戰。雲計算不僅要保證資料的存儲和通路,還要能夠對海量資料進行特定的檢索和分析。由于雲計算需要對海量的分布式資料進行處理、分析,是以,資料管理技術必需能夠高效的管理大量的資料。

  Google的BT(BigTable)資料管理技術和Hadoop團隊開發的開源資料管理子產品HBase是業界比較典型的大規模資料管理技術。

  BT(BigTable)資料管理技術:BigTable是非關系的資料庫,是一個分布式的、持久化存儲的多元度排序Map.BigTable建立在 GFS,Scheduler, Lock Service和MapReduce之上,與傳統的關系資料庫不同,它把所有資料都作為對象來處理,形成一個巨大的表格,用來分布存儲大規模結構化資料。 Bigtable的設計目的是可靠的處理PB級别的資料,并且能夠部署到上千台機器上。

  開源資料管理子產品HBase:HBase是Apache的Hadoop項目的子項目,定位于分布式、面向列的開源資料庫。HBase不同于一般的關系資料庫,它是一個适合于非結構化資料存儲的資料庫。另一個不同的是HBase基于列的而不是基于行的模式。作為高可靠性分布式存儲系統,HBase在性能和可伸縮方面都有比較好的表現。利用HBase技術可在廉價PC Server上搭建起大規模結構化存儲叢集。

5、分布式資源管理

  雲計算采用了分布式存儲技術存儲資料,那麼自然要引入分布式資源管理技術。在多節點的并發執行環境中,各個節點的狀态需要同步,并且在單個節點出現故障時,系統需要有效的機制保證其它節點不受影響。而分布式資源管理系統恰是這樣的技術,它是保證系統狀态的關鍵。

  另外,雲計算系統所處理的資源往往非常龐大,少則幾百台伺服器,多則上萬台,同時可能跨躍多個地域。且雲平台中運作的應用也是數以千計,如何有效地管理這批資源,保證它們正常提供服務,需要強大的技術支撐。是以,分布式資源管理技術的重要性可想而知。

  全球各大雲計算方案/服務提供商們都在積極開展相關技術的研發工作。其中Google内部使用的Borg技術很受業内稱道。另外,微軟、IBM、Oracle/Sun等雲計算巨頭都有相應解決方案提出。

6、資訊安全

  調查資料表明,安全已經成為阻礙雲計算發展的最主要原因之一。資料顯示,32%已經使用雲計算的組織和45%尚未使用雲計算的組織的ICT管理将雲安全作為進一步部署雲的最大障礙。是以,要想保證雲計算能夠長期穩定、快速發展,安全是首要需要解決的問題。

  事實上,雲計算安全也不是新問題,傳統網際網路存在同樣的問題。隻是雲計算出現以後,安全問題變得更加突出。在雲計算體系中,安全涉及到很多層面,包括網絡安全、伺服器安全、軟體安全、系統安全等等。是以,有分析師認為,雲安全産業的發展,将把傳統安全技術提到一個新的階段。

  現在,不管是軟體安全廠商還是硬體安全廠商都在積極研發雲計算安全産品和方案。包括傳統防毒軟體廠商、軟硬防火牆廠商、IDS/IPS廠商在内的各個層面的安全供應商都已加入到雲安全領域。相信在不久的将來,雲安全問題将得到很好的解決.

7、雲計算平台管理

  雲計算資源規模龐大,伺服器數量衆多并分布在不同的地點,同時運作着數百種應用,如何有效地管理這些伺服器,保證整個系統提供不間斷的服務是巨大的挑戰。雲計算系統的平台管理技術,需要具有高效調配大量伺服器資源,使其更好協同工作的能力。其中,友善地部署和開通新業務、快速發現并且恢複系統故障、通過自動化、智能化手段實作大規模系統可靠的營運是雲計算平台管理技術的關鍵。

  對于提供者而言,雲計算可以有三種部署模式,即公共雲、私有雲和混合雲。三種模式對平台管理的要求大不相同。對于使用者而言,由于企業對于ICT資源共享的控制、對系統效率的要求以及ICT成本投入預算不盡相同,企業所需要的雲計算系統規模及可管理性能也大不相同。是以,雲計算平台管理方案要更多地考慮到定制化需求,能夠滿足不同場景的應用需求。

  包括Google、IBM、微軟、Oracle/Sun等在内的許多廠商都有雲計算平台管理方案推出。這些方案能夠幫助企業實作基礎架構整合、實作企業硬體資源和軟體資源的統一管理、統一配置設定、統一部署、統一監控和統一備份,打破應用對資源的獨占,讓企業雲計算平台價值得以充分發揮。

部落格

Java技術倉庫《Java程式員複習指南》

https://github.com/h2pl/Java-Tutorial

整合全網優質Java學習内容,幫助你從基礎到進階系統化複習Java

面試指南

全網最熱的Java面試指南,共200多頁,非常實用,不管是用于複習還是準備面試都是不錯的。

在公衆号【Java技術江湖】回複“PDF”即可免費領取。

寫在最後

如果覺得本文對你有幫助的話,請你也不要吝啬你的“好看”哈,轉發朋友圈就是對我最大的支援啦,你們的支援是對我最大的鼓勵。

對本系列文章有什麼建議和意見,也歡迎留言告訴我,期待你的回饋。