自動(dòng)化部署
自動(dòng)化部署是在接收到用戶的指令后,自動(dòng)將各種資源從原始狀態(tài)轉(zhuǎn)化為可用狀態(tài)的一種技術(shù)。云計(jì)算平臺(tái)將虛擬資源集合中的資源進(jìn)行分析和區(qū)分,然后部署成可為用戶直接提供各種應(yīng)用和服務(wù)的資源,期間需要調(diào)用實(shí)體硬件化的服務(wù)器、用戶所需的軟件配置以及存儲(chǔ)和網(wǎng)絡(luò)設(shè)備。平臺(tái)資源的自動(dòng)化部署分為多個(gè)步驟:首先,自動(dòng)化部署調(diào)用腳本,根據(jù)不同的廠商自動(dòng)配置管理工具和應(yīng)用軟件;其次,監(jiān)測(cè)自動(dòng)化程度,確保腳本的調(diào)用遵從事先設(shè)定好的計(jì)劃,避免云平臺(tái)和人的大量交互;最后,保證整個(gè)部署過程全部基于工作流,而不再依賴于人工的操作。自動(dòng)化部署流程見下圖:
自動(dòng)化部署流程
如圖所示,批量部署層是自動(dòng)化部署過程中的一個(gè)功能模塊,它可以加個(gè)上一具體的軟硬件和邏輯公式,甚至是概念模型定義,并通過管理工具在工作流中調(diào)用并配置這些真實(shí)的物理資源,從而實(shí)現(xiàn)分批管理。
批量部署層中的批量部署模塊是觸發(fā)工作流實(shí)現(xiàn)部署自動(dòng)化的核心機(jī)構(gòu),可以自動(dòng)將不同種類的資源整合到一個(gè)集合中,并儲(chǔ)存在可重復(fù)使用的數(shù)據(jù)庫中。整個(gè)自動(dòng)化部署所形成的工作流可以代替手工完成操作系統(tǒng)、中間件、應(yīng)用成熟、網(wǎng)絡(luò)設(shè)備、存儲(chǔ)層以及服務(wù)器的配置和部署任務(wù)。
資源監(jiān)控
云計(jì)算平臺(tái)中的服務(wù)器數(shù)量眾多,里面的資源也是實(shí)時(shí)變化的,而我們需要的卻是及時(shí)、動(dòng)態(tài)且準(zhǔn)確的數(shù)據(jù)和信息,資源不會(huì)隨著我們的喜好而聚集,而是無規(guī)則地變化著。為了第一時(shí)間發(fā)現(xiàn)資源的異變,資源監(jiān)控技術(shù)顯得格外重要,它可以作為云平臺(tái)對(duì)資源的自動(dòng)部署提供參考和依據(jù),也可以對(duì)系統(tǒng)環(huán)境和資源進(jìn)行動(dòng)態(tài)的監(jiān)控,以此來為分布在平臺(tái)上的各種子系統(tǒng)提供準(zhǔn)確的信息,促進(jìn)系統(tǒng)資源實(shí)現(xiàn)最優(yōu)化分配。
資源監(jiān)控的具體步驟并不復(fù)雜,就是由一個(gè)云平臺(tái)通過一個(gè)監(jiān)控服務(wù)器管理和監(jiān)視平臺(tái)內(nèi)所有的資源(可利用+不可利用),并在“云”中的各個(gè)子服務(wù)器中安置代理程序來監(jiān)視各個(gè)資源服務(wù)器,并按照實(shí)現(xiàn)事先設(shè)定好的周期將資源的使用情況傳送到數(shù)據(jù)庫,起到監(jiān)視服務(wù)器倉庫資源的作用。另外,資源監(jiān)控系統(tǒng)也可以跟蹤資源的可用性,及時(shí)發(fā)現(xiàn)故障并將信息反饋。當(dāng)然,資源監(jiān)控目前并沒有達(dá)到實(shí)時(shí)監(jiān)控和反饋,這受到了運(yùn)算速度的限制。
虛擬化技術(shù)
虛擬化技術(shù)是物聯(lián)網(wǎng)云系統(tǒng)的核心部分之一,它可將計(jì)算能力和數(shù)據(jù)存儲(chǔ)能力進(jìn)行充分整合并進(jìn)行最優(yōu)化的運(yùn)用。虛擬化技術(shù)打破了以服務(wù)器、數(shù)據(jù)庫、應(yīng)用設(shè)備、網(wǎng)絡(luò)和存儲(chǔ)設(shè)備之間的傳統(tǒng)劃分,將硬件、數(shù)據(jù)、軟件、存儲(chǔ)和網(wǎng)絡(luò)等一一分割開來。通過虛擬化,可以自由訪問抽象后的資源,并為同一類資源提供一個(gè)通用的接口組合,而隱藏了其屬性和操作的差異,便于使用和維護(hù)資源。
我們有時(shí)候會(huì)發(fā)現(xiàn)某些網(wǎng)吧機(jī)房里只有一臺(tái)服務(wù)器有硬盤,而其他供用戶使用的計(jì)算機(jī)里面并沒有安裝硬盤,用戶在操作系統(tǒng)中看到的硬盤是虛擬化的,它實(shí)際只存在于服務(wù)器中。由此可見,虛擬化技術(shù)并不是一項(xiàng)新技術(shù),IBM公司早在2011年就開發(fā)了虛擬機(jī)VMware系列,只不過,這些單一的虛擬化技術(shù)并不能應(yīng)用于云平臺(tái)。在云計(jì)算的環(huán)境中,虛擬化技術(shù)涵蓋的范圍空前廣闊,包括了存儲(chǔ)虛擬化、桌面虛擬化、CPU虛擬化、計(jì)算機(jī)虛擬化、應(yīng)用虛擬化、網(wǎng)絡(luò)虛擬化和硬件虛擬化等多個(gè)方面,而每一種虛擬化又有各種子虛擬化分支。
在云平臺(tái)下的整體虛擬化戰(zhàn)略中,可以利用虛擬化技術(shù)提供多種環(huán)境,在無需任何硬件和資源的前提下,就可以模擬不同的實(shí)驗(yàn)環(huán)境,然后放入應(yīng)用程序和操作IT系統(tǒng)。虛擬化環(huán)境測(cè)試成功后,就可以將它們放心大膽地投入生產(chǎn)環(huán)境中,而不用擔(dān)心潛在的沖突和漏洞。
總體來說,虛擬化技術(shù)在云計(jì)算平臺(tái)中的最大作用就是整合硬件。以前,云平臺(tái)上需要上百個(gè)實(shí)際存在的物理服務(wù)器,既浪費(fèi)資源又不利于整合管理,也增加了監(jiān)控系統(tǒng)的負(fù)擔(dān)。但利用虛擬化技術(shù)可以將大量分散的小型物理服務(wù)器整合到一個(gè)大型的、具有超強(qiáng)運(yùn)算能力的大物理服務(wù)器身上。那些成百上千的小型服務(wù)器完全可以用幾個(gè)大型網(wǎng)絡(luò)虛擬機(jī)代替。虛擬機(jī)的維護(hù)成本低廉,這就極大地提高了資源利用率。
同理,利用虛擬化技術(shù)也可以整合存儲(chǔ)系統(tǒng),而將多個(gè)存儲(chǔ)小單元整合到一個(gè)存儲(chǔ)資源池中,可以幫助平臺(tái)簡(jiǎn)化存儲(chǔ)基礎(chǔ)架構(gòu),便于對(duì)數(shù)據(jù)和信息進(jìn)行統(tǒng)一管理。當(dāng)然,我們還可以利用桌面虛擬化技術(shù)降低創(chuàng)建企業(yè)應(yīng)用程序的運(yùn)營(yíng)和能源成本。除此之外,虛擬化監(jiān)控系統(tǒng)還能通過一個(gè)共用的接入點(diǎn)管理所有的物理資源和虛擬資源,減少服務(wù)器所需的監(jiān)控和管理設(shè)備的數(shù)量。
2016年以后,基于物聯(lián)網(wǎng)云的虛擬化技術(shù)已經(jīng)向服務(wù)轉(zhuǎn)型。例如,谷歌已經(jīng)通過虛擬化技術(shù)越過操作系統(tǒng)直接為用戶提供各種服務(wù)。這使微軟的壓力逐漸增大,因?yàn)橛脩粢酝徺I Windows系統(tǒng)的目的主要是獲得里面的應(yīng)用內(nèi)容,如果應(yīng)用內(nèi)容被谷歌虛擬出來,那微軟將沒有任何優(yōu)勢(shì)可言。
并行編程模型
為了更有效地利用平臺(tái)的資源,使用戶更輕松使用物聯(lián)網(wǎng)云帶來的個(gè)性化服務(wù),云計(jì)算平臺(tái)上創(chuàng)建了針對(duì)于用戶的編程模型,這些編程模型非常簡(jiǎn)單,可以讓用戶清楚地看到后臺(tái)執(zhí)行任務(wù)調(diào)度的情況。云計(jì)算平臺(tái)采用的編程模式為MapReduce,這種模式幾乎已經(jīng)成了不成文的標(biāo)準(zhǔn),它可以將一個(gè)任務(wù)自動(dòng)分成多個(gè)子任務(wù),并完成大范圍計(jì)算中的分配和調(diào)度。
MapReduce是由谷歌公司研發(fā)的編程模型,它基于JAVA、Python、C++等語言,既可以稱得上分布式編程模型,也算是一個(gè)高效的任務(wù)調(diào)度模型,用于大于1TB的數(shù)據(jù)集的并行運(yùn)算。其系統(tǒng)架構(gòu)如下圖:
MapReduce的系統(tǒng)架構(gòu)
從圖中可以看出,用戶撰寫的作業(yè)被客戶端提交到主節(jié)點(diǎn)(Master)后,主節(jié)點(diǎn)自動(dòng)將用戶的作業(yè)分解為Map任務(wù)和Reduce任務(wù)。分解后的任務(wù)則被傳送到工作節(jié)點(diǎn)(Worker),在工作節(jié)點(diǎn)向主節(jié)點(diǎn)反饋任務(wù)執(zhí)行情況的同時(shí),整個(gè)分布式文件系統(tǒng)用于存儲(chǔ)MapReduce的輸入、輸出數(shù)據(jù)。