雲端運算的理念生動地體現出網路時代的資訊服務特性,一系列技術創新不斷被更新,以解決網路平台的服務生命週期管理問題,大規模分散式運算、儲存、通訊,以及資源隨需供應、按量計費問題。接下來我們將更深入討論雲端運算,著重在快速部署、資源調度、多租戶、巨量資料處理、大規模訊息傳輸、大規模分散式儲存、授權管理與計費等關鍵技術。

快速部署
自資料中心誕生以來,快速部署就是項重要的功能需求。資料中心管理員和用戶不斷追求更快、更高效、更靈活、功能更齊全的部署方案。雲端運算環境對快速部署的要求將會更高。首先,在雲端環境中的資源和應用不但規模變化範圍大且動態性高,用戶所需的服務主要採用「按需部署」的方式,即用戶隨時呼叫對資源和應用,雲端環境管理程式負責分配資源,部署服務;其次,不同層次雲端運算環境中服務的部署模式是不一樣的,比如虛擬化的基礎架構雲上的應用都被封裝在虛擬機裡,而多租戶平台上的應用則會選擇輕型、較小的封裝方案。另外,部署過程所支援的軟體系統形式很多樣,系統結構各不相同,部署工具要能適應被部署物件的變化。

串流的虛擬機部署方法可以有效減少單一虛擬機的部署時間。包含了作業系統、中介軟體、應用軟體的虛擬機映像,大小通常為幾個GB到幾十個GB,映像的複製速度會嚴重影響虛擬機的部署速度和用戶體驗;另外,虛擬機的啟動囊括整個軟體堆疊的組態和關聯,操作非常複雜,自動化程度的高低直接關係著虛擬機部署的效率。因此,即使採用了串流來部署,過程仍然會耗費大量時間。此外,在部署多個虛擬機時,串流式的虛擬機部署是順序的、串列的,若想進一步提高雲端環境中虛擬機的部署速度,則需要考慮平行部署或者協同部署技術。

平行部署是指將傳統的順序部署方式改變為平行執行,同時執行多個雲部署任務,將虛擬機同時部署到多個實體伺服器上。如圖4.1所示。


理想情況下,平行部署可以雙倍減少部署所需時間,但儲存映像檔所在部署伺服器的讀寫能力,或者部署系統有限的網路頻寬,卻也限制了實際的平行程度(即部署速度)。例如,在網路頻寬有限的情況下,同時運行多個部署任務時,這些任務會搶頻寬,當網路頻寬被佔滿時,部署速度就無法進一步提高。在這種情況下,協同部署技術可用來進一步提高部署速度。

協同部署技術的核心是將虛擬機映像在多個目標實體伺服器間的網路中傳輸,而非僅在部署伺服器和目標實體伺服器之間傳輸,進而提高部署速度。透過協同部署,網路頻寬就不再是限制部署速度的瓶頸,部署的速度上限取決於各目標實體伺服器間的網路頻寬總和。利用虛擬化技術和協同部署技術,我們可以建構一個協同部署系統,進而確保大規模資料中心服務的部署速度、效率和品質。如圖4.2所示,協同部署系統的架構包括了部署伺服器節點(圖中的雲部署伺服器)和被部署節點(圖中的實體主機A、B、C),關鍵模組包括部署控制器、映像拷貝器、協同部署器和協同控制器等。


部署伺服器負責將協同部署器及用戶空間檔案系統(透過I/O操作截獲技術,將用戶的本地檔存取重定向到網路上)的安裝檔發送到被部署節點,並發起部署任務;部署控制器負責協調各個節點間的部署進度,交換檔案資訊;被部署的節點在部署任務開始以後,根據啟動順序向用戶空間文件系統,呼叫虛擬映像資料集,用戶空間檔案系統呼叫協同部署器獲取文件區塊。協同部署技術能大幅提高部署速度。由於實體伺服器間存在大量共用頻寬,因此協同部署可能會影響其他實體伺服器的網路頻寬。

平行部署和協同部署技術同樣可以運用到實體解決方案的自動化部署過程中,加速部署過程。雲端環境中實體解決方案的部署,是指在實體平台上安裝軟體環境。首先,雲端的硬體環境搭建起來以後,需要在這些硬體上安裝雲端軟體環境,包括大規模的作業系統的部署、虛擬機運行平台的組態、雲基礎架構層管理軟體的安裝等。其次,在擴展雲平台架構的時候(例如為現有的資料中心加入新的實體伺服器),需要在新節點上面部署和組態作業系統、虛擬化平台、中介軟體等全套軟體。

與虛擬機的部署相比,實體解決方案自動化部署的難處在於軟體的多樣化和解決方案的複雜性。為了能夠自動化部署實體解決方案,需要定義一種標準格式來封裝解決方案,將軟體程式檔、安裝組態script、metadata等內容一起封裝;還需要一個通用的部署引擎,以及一組自動化安裝組態流程。透過這種方式,部署引擎在接收到解決方案的封裝文件以後,解析解決方案的metadata,按照自動化流程驅動整個解決方案的安裝組態過程。

資源調度
資源調度指的是,在特定的資源環境下,根據一定的資源使用規則,在不同使用者間進行資源調整的過程。這些資源使用者對應著不同的運算任務(例如虛擬化解決方案),每個運算任務在作業系統中對應一個或者多個流程。運算任務的資源調度通常有兩種途徑:在運算任務所在硬體上調整資源使用量,或者將運算任務轉移到其他機器上。圖4.3是將運算任務搬移到其他機器上的例子。在這個例子中,實體資源A(如一台實體伺服器)的使用率遠高於實體資源B,透過將運算任務一從實體資源A搬移到實體資源B,使資源的使用更加均衡合理,達到負載平衡的目的。


目前的技術已經可在幾秒內(暫時停機時間為毫秒級)將一個作業系統進程,從一台機器搬移到另一台機器。這種作業系統流程的動態搬移技術,能夠實現運算任務在不同機器間的搬移。虛擬機的出現,使得所有的運算任務都被封裝在一個虛擬機內部。由於虛擬機具有隔離特性,因此可以採用虛擬機的動態搬移方案,達到運算任務搬移的目的。

雲端運算的巨量規模為資源調度帶來了新挑戰。資源調度需要考慮資源的即時使用情況,這就要求對雲端運算環境的資源進行即時監控和管理。雲端運算環境中資源的種類多、規模大,使得即時監控和管理變得十分困難。此外,一個雲端運算環境可能有成千上萬的運算任務,這對調度演算法的複雜性、有效性提出了挑戰。對於基於虛擬化技術的雲基礎架構層,虛擬機的大小一般都在幾個GB以上,大規模平行的虛擬機搬移作業,很可能會因網路頻寬等因素的限制,而變得非常緩慢。

從調度的粗粒度來看,虛擬機內部應用的調度是雲端運算用戶更加關心的。如何調度資源滿足虛擬機內部應用的「服務層級協議」(SLA),也是目前待解難題之一。以效能為例,應用資源調度系統需要監控應用的即時效能指標,例如吞吐量、回應時間等。利用這些效能指標,結合歷史紀錄及預測模型,分析出未來可能的效能值,並與用戶預先制訂的優化規則進行比對,再結論應用是否需要,以及如何進行資源調整。目前,大多數虛擬化管理方案只能透過在虛擬機級別上的調度技術結合特定調度策略,嘗試為虛擬機內部應用做資源調度,普遍缺乏精確性和效果。

多租戶技術
傳統的軟體運行和維護模式要求軟體被部署在用戶所購買或租用的數據中心裡,這些軟體大多服務於特定的個人用戶或者企業用戶。在雲端運算環境中,更多的軟體以「軟體即服務」的方式發布出去,通常會提供給成千上萬的企業用戶共用。和傳統的軟體運行和維護模式相比,雲端運算要求硬體資源和軟體資源能夠更好地共用,具有良好的可擴充性,任何一個企業用戶都能夠按照自己的需求客製化組態,而不影響其他用戶的使用。多租戶技術就是目前得以滿足上述需求的關鍵技術。

多租戶技術是一項雲端運算平台技術,使大量用戶共用同一堆疊的軟硬體資源,每個用戶按需使用資源對軟體服務進行客製化組態,且不影響其他用戶的使用。這裡,每個用戶被稱為一個租戶。如圖4.4所示。


目前普遍認為,採用多租戶技術的「軟體即服務」應用需要兩項基本特徵。首先,「軟體即服務」應用是基於Web,能夠服務大量租戶且容易擴充;其次,在前者基礎上要求「軟體即服務」平台提供附加的業務邏輯,使租戶能夠對「軟體即服務」平台進行擴展,進而滿足更大型企業的需求。目前,多租戶技術面臨的技術難點包括資料隔離、客製化組態、架構擴展和效能客製化。

資料隔離是指多個租戶在使用同一個系統時,租戶的業務資料是相互隔離儲存的,不會相互干擾;多租戶技術需要安全、高效能的資料隔離,確保租戶資料安全及多租戶平台的整體性能。多租戶的資料庫管理有三種基本方式:一是給每個租戶建立單獨資料庫,好處是用戶間資料充分隔離,缺點是資料庫管理的成本和耗用比較大;二是將多個租戶的資料保存在同一個資料庫中,採用不同的Schema,某種程度減少了資料庫的管理成本和耗用,但也相對削弱資料隔離的效果;三是將多個租戶的資料保存在一個資料庫中,採用相同的Schema,也就是說將資料保存在一個表格,或者一類具有相同Schema的表格中,透過租戶的標識碼欄位進行區別。儘管這樣的管理成本和耗用最低,但資料隔離的效果卻也最差,需要相當安全檢驗來保障租戶間的資料隔離。

客製化組態是指,「軟體即服務」應用能夠支持不同租戶對此應用的組態客製化,例如介面顯示風格的客製化等。客製化組態的基本要求是,一個租戶的客製化操作不會影響到其他租戶,這就需要多租戶系統能夠對同一個租戶的組態進行描述和儲存,並且能夠在租戶登錄時,根據該租戶的客製化組態為其呈現相應的應用。在傳統的企業應用運行模式中,每個企業用戶都擁有一個獨立的應用實例,可以非常容易儲存和載入任何客製化組態;但在多租戶場景下,成千上萬的租戶共用同一個應用實例。在現有的平台技術中,例如J2EE,對應用組態的更改,通常會對該平台中的所有用戶產生影響。因此,如何支援不同租戶對同一應用實例的獨立客製化組態,是多租戶技術面臨的基本挑戰。

架構擴展是指多租戶服務能夠提供靈活的、具備高可擴充性的基礎架構,進而確保在不同負載下多租戶平台的效能。典型的多租戶環境下,多租戶平台需能支援許多租戶的同時存取,因此平台可擴充性相當關鍵。一個簡單的方法是,在初始階段就為多租戶平台分配巨量資源,確保在負載達到峰值時,平台的效能不減。然而,很多時候負載並非都處於峰值,所以這個方法會造成龐大的運算資源和能源浪費,大幅提高供應商的營運成本。因而,多租戶平台應該具有靈活可擴充的基礎架構,能夠根據負載的變化隨需擴充。

效能客製化是多租戶技術面臨的另一個挑戰。對於同一個「軟體即服務」應用實例來說,不同的用戶對效能的要求也可能不同。例如,某些客戶希望透過支付更多的費用來獲取更好效能,而另一些客戶則本著「夠用即可」的原則。在傳統的軟體營運模式中,每個客戶擁有獨立的資源堆疊,只需要為付費較多的用戶組態出更高階的資源就可以了,因此相對而言,效能客製化更容易;然而,同一個「軟體即服務」應用有許多租戶共用資源,如何為不同租戶在這套共用資源上靈活地組態效能,是多租戶技術中需要的突破和挑戰。

IT人員經常會面臨選擇虛擬化技術還是多租戶技術的問題。多租戶與虛擬化的不同在於:虛擬化後的每個應用或服務單獨存在於一個虛擬機器裡,不同虛擬機之間實現了邏輯的隔離,一個虛擬機感知不到其他虛擬機器;多租戶環境中的多個應用運行在同一個邏輯環境下,需要透過其他手段,比如應用或服務本身的特殊設計,來確保用戶間的隔離。

多租戶技術也具有虛擬化技術的一部分好處,如可以簡化管理、提高伺服器使用率、節省開支等。從技術實現難度的角度來說,虛擬化已經比較成熟,並且得到大量廠商的支援,而多租戶技術還在發展階段,不同廠商對多租戶技術的定義和實作還有分歧。當然,多租戶技術有其存在的必然性及應用情境。大量用戶使用同一類型應用時,如果把每個用戶的應用都做成單獨的虛擬機,可能需要成千上萬台,佔用大量資源,且多半重複。不僅增加虛擬機的管理難度,消耗的效能也大大增加。在這種情況下,就得以凸顯多租戶技術相對經濟的策略價值。

巨量資料處理
做為以網路為運算平台的雲端運算,將會更廣泛囊括到巨量資料處理任務。巨量資料處理指的是對大規模資料的運算和分析,通常資料的規模可以達到TB甚至PB級別。在網路時代,資料的統計和分析很多是巨量資料級別的,一個典型的例子就是搜尋引擎。由於資料量非常大,一台電腦不可能同時滿足效能和可靠性等要求。以往,對於巨量資料處理的研究通常是基於某種平行運算模型和計算機叢集系統的,平行運算模型可以支援高吞吐量的分散式批次處理運算任務和巨量資料,電腦叢集系統則在網路連接的機器叢集上,建立一個可擴展的可靠運算環境。

在網路時代,由於巨量資料處理操作頻繁,很多研究者投入支援巨量資料處理的程式撰寫模型方面的研究。例如,一九九九年誕生的River 程式撰寫模型,開發人員可以基於該程式撰寫模型進行開發和執行運算任務。River 程式撰寫模型的設計目的就是使得大規模電腦叢集的程式撰寫和運算更容易,並具備更高的運算效能。

River 程式撰寫模型有兩個核心設計特性:高效能的分散式佇列,以及儲存冗餘機制。因此,River 需要對磁片和網路資料傳輸做出很細膩的調度。當前,世界最流行的巨量資料處理的程式撰寫模型是由Google 的狄恩(Jeffrey Dean)等人所設計的 MapReduce,能將一個任務分成很多更小的子任務,這些子任務能調度空閒的處理節點,使得處理速度愈快的節點處理愈多的任務,避免處理速度慢的節點延長整個任務的完成時間。下面,我們將介紹MapReduce 框架的工作原理和設計原則,以便加深讀者對巨量資料處理系統的了解。


看大圖

大規模訊息通信
雲端運算的核心理念就是資源和軟體功能都是以服務的形式進行發布的,不同服務間經常需要透過訊息通信進行協作。可靠、安全、高效能的通訊基礎架構對於雲端運算的成功至關重要。訊息通信可以分為同步通信和非同步通信。如圖4.6所示。


看大圖

同步訊息通訊是直接呼叫伺服器端服務,等待服務結果返回後才繼續執行。在服務端,服務的運行環境需要保存與用戶端通信的訊息,處理完成時將結果返回給用戶端。這種同步訊息通訊機制可能影響用戶端系統的處理速度,以及服務端系統的可用性。首先,用戶端系統因為需要同步等待而無法繼續處理任務;其次,同步通訊機制長期佔用服務端系統資源,服務實例也因需要與遠端用戶端通信,任務處理完成前無法立即處理下一個任務;再者,同步訊息通訊會降低服務的可用性,因為在分散式環境中,用戶端所呼叫的服務實例可能因為種種因素而不可用,造成用戶端呼叫無法得到處理。因此,非同步訊息通訊對於雲端運算環境就顯得格外重要。

在非同步訊息通信中,用戶端和服務端並不直接通信。用戶端把呼叫以訊息形式放在呼叫訊息佇列裡,繼續處理其他業務邏輯;服務實例會從呼叫訊息佇列中獲取呼叫訊息,並將處理結果放入回應訊息佇列裡,再立即處理下一個呼叫。訊息通信管理軟體判斷訊息呼叫是否成功發給目標服務實例,藉此來判斷該實例是否可用,並且在目標服務實例不可用的情況下將訊息發給其他服務實例,進而為用戶端提供高可用的服務。

服務導向的理念使得非同步訊息通信對雲端運算更加重要。非同步訊息通訊機制可使雲端運算每個層次中的內部元件間和各個層次間解耦合,確保雲端運算服務的高可用性。非同步訊息通信機制對於服務的可擴充性也非常重要,訊息佇列管理軟體可以透過佇列中的訊息數量和訊息呼叫的服務類型,來預測每種服務的工作負載變化趨勢,並且透過該趨勢自動增減服務實例。

雲端運算也為分散式系統中的訊息通信帶來新挑戰。首先,訊息通信服務必須夠穩定,才能確保在應用程式需要使用訊息服務時,服務是一定是可用,確保在傳輸過程中不會丟失訊息;其次,訊息通信服務必須可擴充,進而支持大規模節點同時以高效能執行的訊息讀寫。雲端運算的安全問題一直以來備受關注,因此訊息通訊服務還要確保訊息傳遞的安全,保障業務的安全性。此外,緊湊、高效的訊息內容模型也有助於提高處理效率,這在雲端運算這樣的大規模訊息通信處理環境中尤其明顯。目前,雲端運算環境中的大規模資料通信技術仍在發展階段,亞馬遜的SQS(Simple Queue Service)是當今業界著名的雲端運算大規模訊息通信產品。

大規模分散式儲存
分散式儲存的目標是利用多台伺服器的儲存資源,滿足單台伺服器所無法滿足的儲存需求。分散式儲存要求儲存資源能夠被抽象化展現和統一管理,確保資料讀寫操業的安全性、可靠性、效能等各種要求。

過去幾十年,隨著網路技術的發展,愈來愈多的網路應用具有儲存巨量資料的需求,例如搜尋引擎和影片網站,這些需求催生了一些優秀的大規模分散式儲存技術,例如分散式檔案系統。分散式檔案系統允許用戶存取本機系統一般存取遠端伺服器的檔案系統,用戶可以將自己的資料儲存在多個遠端伺服器上,分散式檔案系統基本上都有冗餘備份機制和容錯機制,確保資料讀寫的正確性;雲端環境的儲存服務基於分散式檔案系統,並根據雲儲存的特徵做了相應的組態和改進。以下將分別介紹幾種分散式檔案系統和雲儲存服務。

Frangipani是個可擴充性很好的高效能分散式檔案系統,該系統採用了兩層的服務體系架構:底層是一個分散式儲存服務,能夠自動管理高擴充、高可用的虛擬磁片;在這個分散式儲存服務上層運行的是分散式檔案系統。JetFile 是個基於P2P的廣播技術、支援在網路的異構環境中分享檔案的分散式檔系統。Ceph 是個高效能又可靠的分散式檔案系統,儘可能分開資料和資料管理,藉此獲得最大I/O效能。

GFS(Google File System)是Google 公司設計的可擴充分散式檔案系統。工程師在考慮了分散式檔案系統的設計準則的基礎上,又發現了以下幾個不同於傳統分散式檔案系統的需求:第一,PC伺服器極易發生故障,造成節點失效,故障的原因繁多,有機器本身的、網路的、管理員引起的及外部環境引起的,因此需要對整個系統中的節點進行監控,檢測出現的錯誤,開發相應的容錯和故障回復機制。第二,在雲端運算環境中,巨量的結構化資料會以非常大的檔案儲存,一般為GB等級,因此需改變檔案系統以中小檔案(KB或者MB量級)為準的設計準則,以適應超大檔案的存取。第三,系統中對檔案的寫入絕大多數是追加作業,也就是在檔案的末尾寫入資料(在檔案中寫入資料的情況其實很少發生),而且資料一旦被寫入,也通常是依順序讀取,不會被修改,因此在設計系統時把優化重點放在追加作業上,就可以大幅度提高系統的效能。第四,設計系統時要考慮開放的、標準化操作介面,並隱藏檔案系統下層的負載平衡、備援複製等細節,這樣才可以方便地被上層系統大量使用。因此,GFS能夠有效支持大規模巨量資料處理應用程式。圖4.7展示了GFS的系統架構。


看大圖

雲端運算的出現為分散式儲存帶來新需求、新挑戰。在雲端運算環境中,資料的儲存和操作都是以服務形式提供。資料類型形形色色,包括普通檔案、虛擬機映像檔這樣的二進位大型檔案、類似XML的格式化資料,甚至資料庫的關聯式資料等。雲端運算的分散式儲存服務設計必須考慮到各種不同資料類型的大規模儲存機制,以及資料操作的效能、可靠性、安全性和單純性。

目前,雲端運算環境下的大規模分散式儲存方向已經有了研究成果和應用。BigTable 是Google 設計用來儲存巨量結構化資料的佈式儲存系統,Google 使用該系統來將網頁儲存成分散式、多維的、組織化的圖形。Dynamo 是亞馬遜設計的一種基於鍵值對的分散式儲存系統,設計之初的主要考量,就是亞馬遜的大規模資料中心隨時都可能發生大大小小的元件失效,因此Dynamo 能夠提供非常高的可用性。亞馬遜的S3是個支援大規模存儲多媒體這樣的二進位檔的雲端運算儲存服務。亞馬遜的SimpleDB 是建立在S3和EC2之上、用來儲存結構化資料的雲端運算服務。

授權管理與計費
授權管理與計費是IT基礎架構的最終支付環節,牽涉服務提供商與客戶的切身利益。客戶透過購買授權或者支付費用獲得對軟硬體、服務的智慧財產權或使用權利,以及相應的售後服務支援;各個供應商獲得客戶支付的費用。因此,透過授權管理與計費,整個IT業才得以運轉。

僅從軟體的授權計費模型來看,傳統的軟體授權購買方式下,用戶需要估算自己需要使用的軟體的CPU數量、主機數量、用戶數量,然後根據軟體發售商提供的授權方法,得到需要購買的授權數量的最大值,做為最終購買的數量。舉例來說,用戶的資料中心有一百台機器需要使用一個軟體,每台機器有一個CPU,那麼用戶購買軟體時,需要購買一百個授權。但在實際使用時,可能只有幾台機器在使用這個軟體,而使用軟體的機器上的CPU佔用率也遠遠不足一○○%;也就是說,在傳統的軟體授權計費模型下,用戶購買的授權數量遠遠超過真實使用量,可說是白花了不少錢。

隨著雲端運算時代的到來,IT基礎架構的授權管理與計費模式將發生重大變化。在雲端運算的場景下,用戶可以按需付費或者按使用計費,少花冤枉錢。在隨需付費模式下,用戶可以估計自己對於軟體授權的使用情況,決定自己採購的授權數量。雲端運算環境會根據用戶的支付給用戶一定量的授權,並按照用戶在雲端運算環境中的使用情況,運算已使用的授權數量或發布授權。當剩餘的授權數量少於某個特定值時,系統會提醒用戶決定是否追加付費,或者減少他使用的授權數量。

在隨需計費的模式下,用戶甚至不需提前估計自己需要的授權數量,系統會自動追蹤用戶在雲端環境裏的使用情況,定期產出授權帳單。也就是說,未來用戶使用雲端運算環境中的資源,會像用水和用電一樣簡單方便。雖然雲端運算的新型計費模型設計得非常美好,但為了達到這個理想,還有很多工作要做,其中最迫切的問題就是,眾多軟硬體供應商目前還沒有制訂出對應在雲端運算環境的產品計費模式,成為這些產品進入雲端運算環境的障礙。(摘錄整理自第四章)


雲端策略

陳瀅等/著
天下雜誌出版
售價:420元
 

《作者簡介》

陳瀅
1999年在東南大學電腦科學與工程系獲博士學位,同年加入IBM中國研究院。現任IBM中國研究院副院長、西安交通大學電信學院兼職教授、東北大學軟體學院兼職教授、中國電腦學會高級會員。研究興趣包括分散式計算、自主計算、IT服務管理和服務科學。他已在國內外學術會議和期刊上發表五十餘篇文章,受邀擔任多個國際學術會議的程式委員會委員、分會主席和學術刊物的評審。目前擔任CIKM 2009 CloudDB Workshop主席。在美國和其他國家有三十餘項專利申請。

陳瀅是IBM全球研究部分散式計算戰略組和服務管理戰略組成員,參與制定相關研究戰略的制定和執行,負責將IBM研究院的先進技術推廣到中國,協助推動中國政府在現代服務業轉型和自主創新等 戰略的實施。他領導中國研究院雲計算戰略和服務科學推廣工作,並和國內多所大學進行研究合作,多年來一直在大學進行學術報告,授課和交流。目前他帶領的研究團隊正在從事雲計算、虛擬化技術、綠色計算和IT服務管理等課題的研究。

熱門新聞

Advertisement