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