叢集的可擴充性及其分布式體繫結構(2)

來源:互聯網
上載者:User

體繫結構比較與可擴充性研究(上)

林凡 iamafan@21cn.com

辰訊軟體工作室研發部經理
2001 年 11 月

這篇文章是《叢集的可擴充性及其分布式體繫結構》第二篇的下半部分,將繼續介紹常見的幾類並行計算體繫結構、可擴充與單一系統映象、叢集的重要指標等內容。

可擴充的並行計算體繫結構
首先,我們先來看一下電腦系統體繫結構發展的幾個主要類型。每種體繫結構的差別並不大,關鍵在於互聯技術、結點的複雜度和耦合程度的不同。在叢集計算和分布式系統中,以下這三種體繫結構是比較具有代表性的。

  • 無共用體繫結構

    無共用體繫結構
    (目前大多數叢集採用的方式。每個節點都是獨立的PC或者工作站)

    我們研究的叢集系統大多數屬於這一類的體繫結構。叢集的每一個結點都是完整獨立的作業系統和硬體裝置集合。結點之間通過區域網路或者開關陣列以松耦合的方式串連起來,彼此分享結點的部分甚至全部可用資源:CPU、記憶體、磁碟、IO裝置等等,以形成一個對外單一、強大的電腦系統。這類系統對SSI的能力較弱,需要特殊的中介軟體或者OS擴充加以支援。

  • 共用磁碟體繫結構

    共用磁碟體繫結構
    (結點基本上仍是獨立的電腦,沒有或者不使用本地的磁碟檔案系統)

    Distributed File System正是這類體繫結構的應用體現。常見的NFS、AFS或者GFS都屬於這個範疇。而硬體上的解決常常通過共用磁碟陣列或者SAN來實現。該體繫結構主要能夠解決地區儲存空間的容量問題,通過構造單一的虛擬檔案系統,提供給整個叢集一個巨大的存放裝置。尤其在一些高可用的場合,共用磁碟陣列常常能夠解決檔案系統容錯和資料一致等可靠性問題。

  • 共用儲存空間體繫結構

    共用儲存空間體繫結構(最不易實現,具有較強的SSI能力)

    從實現的難度上講,不論是硬體製造的複雜性還是軟體的實現難度,這種體繫結構都大大超過其他幾類體繫結構的實現。實現這類體繫結構的叢集系統有DSM(分布式共用儲存叢集)、NUMA、ccNUMA等技術。在這類體繫結構中,可以將多個節點的計算資源集合在一起,形成一個記憶體空間一致的單一系統。在隨後的學習中我們知道,這樣的系統具有最好的SSI(單一系統映像)能力。

可擴充與單一系統映象
我們最終希望,我們所面對的並行叢集,不管適用於密集計算還是高可靠商用環境,都要有良好的可擴充性,可接受的單位計算成本,可預期的技術前景。因此,設計一個計算系統特別是並行環境下的叢集系統,時時刻刻別忘了可擴充性這一核心的要求。

但我們從另外一個角度來看待並行計算叢集的時候,就會有不同的結論了。其實,對於終端使用者和編程人員來說,並行電腦模型的重點在於他們所看到的電腦是什麼樣的,也就是我們通常所稱的SSI(單一系統映像)。

如果作為編程者,當然希望自己所面對的是一台機器而不是一堆機器,一台機器意味著單一的定址空間,無須處理訊息傳遞或者遠程調用這樣複雜的編程技術。那麼,在這樣的觀點下,具有單一地址空間的叢集系統就具備了這個能力;或者使用者希望擁有一個巨大的一致的(只有一個根目錄)的檔案系統,那就需要在檔案系統層次上進行SSI的工作。

但從使用者的角度來看,他並不關心你是如何處理諸如地址空間、訊息傳遞這些看起來和他毫無關係的東西,使用者只關心他用的是一台獨立的電腦系統,這樣可以減少他使用的複雜度,不需要在多個系統之間來回切換,可以方便的管理他所面對的"一台機器"。那麼,提供管理層次和使用層次的SSI就是必要的了。

所以,並行計算模型就是由使用者(包括程式員、使用者)看到的一個抽象並行電腦,和馮氏結構電腦相似,能夠進行順序計算(其背後可能是並行的運算程式)和並行計算任務的電腦系統。

按照處理器、記憶體、OS以及互聯方法來進行並行系統的分類,在參考彼此可擴充性和單一系統映像的這兩個方面,我們能夠得到下面的圖形:

叢集、分布式系統、MPP、SMP的體繫結構比較

中,節點可以是一台PC、一台工作站或者SMP伺服器。節點的複雜性指的是軟體和硬體的能力。一般來說,叢集節點要比MPP複雜一些,因為每個叢集結點都有獨立的作業系統和外圍裝置,而MPP中的結點可能僅僅是作業系統的一個微核心。

SMP伺服器的節點複雜性和PC以及商用叢集相比,相對高一些。拿最常見的x86構架SMP伺服器來說吧,不但主板、匯流排技術都遠遠比PC複雜。而且為了支援企業級應用環境,SMP還需要支援更多的高端外設,提供存放裝置的熱拔插能力,記憶體資料錯誤修正等等高端技術,這些技術的應用勢必增加SMP的複雜程度。

MPP通常是指採用無共用資源結構的大型平行處理系統,一般包括幾百個處理器節點,節點一般運行一個不完整的OS(也叫微核心),結點之間通過高速開關互聯。這樣的專有系統往往具有比較好的可擴充能力,但是在技術換代上受限於專有系統本身。

SSI作為叢集實現的一大要素,其範圍包括了單一的應用程式層次、子系統,運行時系統、作業系統核心以及硬體層次。或者說,SSI不是絕對的,是一個相對的概念,取決於使用者從什麼樣的角度看待系統,是IP層面上還是記憶體空間上或者是檔案系統的SSI,這都由最終的應用環境決定。

到了分布式系統的這個範疇,系統往往提供多個系統映象,呈現出一個多入口、多映象的系統集合,每個節點具有很高的自治能力。而MPP、SMP則以緊湊的方式提供相對單一的計算資源,如同一個巨大的工作站。在分布式系統中,除了使用同構結點外,還根據需要常常使用異構的平台,這勢必增加分布式系統的設計難度和管理複雜性。其他特性見下表:

特徵 MPP SMP 叢集 分布式系統
結點個數 100~1000數量級 10~100數量級 100左右的數量級 10~1000以上數量級
結點複雜性 細粒度到中粒度 中或粗粒度 中粒度 大範圍
結點間通訊 訊息傳遞或者共用變數 共用儲存空間 訊息傳遞 共用檔案、RPC、訊息傳遞
任務調度 主機單一隊列 單一運行隊列 多隊列協同運行 獨立的運行隊列
單一系統映像 部分支援 支援完全的SSI 某一層次支援 目前不支援
結點作業系統 一個主要的核心和多個微核心 獨立的完整的OS N個同類OS 同類OS或異構OS
地址空間 多/單地址空間(分布式共用記憶體) 單一
系統可用性 低或中 高或者容錯 中等
歸屬單位 一個組織 一個組織 可以多個組織(複用) 多組織
串連距離 緊耦合,在一個物理空間內 緊耦合,在一個機箱內 松耦合,樓區範圍(依賴於串連介質) 松耦合,跨地區(地區或國家)

各類並行系統的比較

對於這四類系統來說,SMP的SSI程度最高,它是在所有的層次上提供SSI,即共用一切系統資源:單一地址空間、單一的檔案系統、單一的作業系統核心等等,看起來和一台單獨的單CPU沒什麼兩樣。MPP僅僅在某些應用程式層和系統層支援SSI。叢集提供的SSI程度更低,一般只能滿足某一兩個方面的SSI要求。而對於分布式系統,比如網格,其SSI的實現程度就低的多了。通過類似JAVA這樣的跨平台工具,分布式系統或許可以提供某一定義下的SSI能力,比如單一的JAVARunspace。

叢集的重要指標
對於叢集,我們可以得到這樣的一個簡單的概念:叢集是全體電腦(也叫節點)的集合,這些電腦由高效能網路或者LAN物理的相連。典型的情況下,每個電腦結點可以是一台SMP一台工作站或者是最普通不過的PC。最重要的是,這些各自獨立的電腦要能夠同心協力一起工作,而且在"外"看上去是單一的整合的電腦資源。

如果只是簡單的用LAN把叢集串連起來,就稱之為叢集,是不可能具備實用價值的。考察叢集很重要的是看待叢集的幾個效能、功能指標。

能用性:由於叢集中的每個節點都是運行傳統平台,故使用者能在熟悉和成熟的環境中開發和運行他們的程式。通用平台提供編程環境、操作介面、控制監控系統的工具甚至是GUI,允許使用者們運行他們原來在工作站上的大配量序而無需修改。所以,我們可以把叢集系統看作一個大型的工作站,作為使用者,和平時操作沒什麼兩樣,只是效能提高了許多。

可用性:可用性是指一個系統從事生產性使用的時間百分比(MTBF平均無故障時間)。傳統的整體系統,比如主機系統和容錯系統依靠昂貴的定製設計來實現高可用性。叢集不使用定製組件,而使用廉價的商品化組件以提供高可用性,而高度的裝置冗餘則是叢集最常使用的方式:

  • 處理器和儲存空間:叢集有多個處理器和儲存空間組件,當某個組件失效時,其他的仍然可以使用,不影響叢集整體的運行。與此相反,在SMP中,由於處理器通過共用儲存空間和匯流排通訊,所以儲存空間一旦失效將會導致系統崩潰。儲存空間就成了SMP的"單點失效"。
  • 磁碟陣列:我們常見的RAID 0或者5,都能夠滿足電腦的磁碟冗餘容錯需求。在叢集中,往往使用多個局部磁碟,通過標準的共用協議(NFS,IFS等)以支援容錯需求。當某個節點的本地磁碟失效時,可以通過遠程磁碟繼續運行。常見的有NAS裝置,一種專用於叢集網路儲存的磁碟裝置。或者藉助Distributed File System軟體,實現多個叢集節點之間的磁碟容錯。
  • 作業系統:一般的說,叢集在某一層次上體能夠實現單一系統映像。但是多個作業系統映像還是存在的,每個節點都有一個獨立的作業系統。當某個節點因為軟體或硬體故障而崩潰,其他的節點仍然不受影響繼續工作,而整個叢集也和原先沒有什麼兩樣。我們有時也把這一特性叫做"節點容錯能力"。
  • 通訊網路:好的叢集設計充分考慮了各種可能出現的故障情況,並採取一切可行的措施加以避免。叢集結點的通訊故障也是必須考慮的。在一個大型的複雜的叢集中,一段通訊鏈路的故障可能導致不止一個的節點失效,甚至會使得整個叢集變得不可用。因此,在叢集的關鍵點之間採取合適的冗餘鏈路就非常必要了。一般考慮到叢集的入口節點、主控結點、或者監視節點比較容易成為單點失效,那麼在這些節點的接入策略中,使用備份鏈路可以達到比較好的效果。

可擴充性:一個叢集的計算能力隨結點增多而增加。其次,叢集的可擴充性是群體可擴充性。因為是松耦合的結構,叢集能擴充至幾百個結點,而對於SMP來講,要超過幾十個結點就非常困難。

在SMP中,共用儲存空間以及儲存空間匯流排是系統效能的瓶頸。相同的程式集運行於叢集時,不存在儲存空間瓶頸。每個結點可在一個結點上執行,充分使用局部儲存空間。對於這類應用,叢集可提供更高的總體儲存空間頻寬和減少儲存空間時延。叢集的局部磁碟也聚集為大磁碟空間,可容易地超過集中式RAID磁碟空間。增強處理、儲存和I/O能力使得叢集只要使用經良好開發的、如PVM或MPI那樣的並行軟體包,就可求解大型應用問題。

SMP不具有高可擴充能力,因為它使用競爭匯流排和集中式共用儲存空間。單作業系統映像及共用儲存空間是兩個潛在的單失效點,會降低SMP的可用性。

容錯系統有極高的可用性,但擴充的代價昂貴。而MPP的擴充能力要更強一些,而且可以保持比較好的SSI能力。目前,叢集處於相對摺衷的位置,將向著更高效能更高可用性的方向擴充。

效能價格比:叢集能成本有效擷取上述優點。傳統的超級電腦以及MPP的成本很易達到幾千萬美元。與此相比,具有相同峰值效能的叢集價格則要低1到2個數量級。叢集大量的採用商品化組件,他們的效能和價格遵循摩爾定律,從而使叢集的效能/成本比的增長速率遠快於MPP。


可用性與延展性的綜合比較

設計一個具有良好的擴充叢集系統,就要兼顧上述的方方面面。

首先盡量使叢集的各個組成組件相互獨立,以使獨立的局部擴充成為可能,並且保證向後相容的特性。還要儘可能採用商品化的組件,包括OS、互連網絡、主機系統甚至是應用編程環境。最終實現:演算法獨立於體繫結構、應用獨立於平台、語言獨立於機器、結點獨立於網路。

其次就是選擇合適的實現模型來進行叢集系統的設計任務,盡量使用流行的開放的標準件,以降低單位成本。

最後,在設計的時候還要盡量平衡效能,避免系統裡出現的"木桶原理"(眾所周知,木桶的裝水量受限於木桶最短的那塊木板);此外在考慮可用性的時候也要注意單點失效的問題,以免實際應用中因為小的錯誤導致整個系統不可用。

那麼,讓我們來看一下經過一番討論之後,我們所期望的叢集是什麼樣子的。

結束語
我們之所以花費大量的篇幅介紹叢集的幾個重要的體繫結構概念,是因為這些概念構成了叢集的最終整體。最後就讓我們來看一下,綜合了上述的方方面面後,我們可以得到以下幾點關於叢集的要素:

  • 獨立的結點:每個節點是一台完整的電腦,一般是單一的系統。
  • 單一系統映像能力:一個叢集是一個單一的計算資源。叢集將結點作為單獨的資源,藉助於單一系統映像技術,實現統一資源單一入口的概念。SSI使得叢集更加便於使用和管理。
  • 有效結點間串連:叢集中的結點,通常使用商品化網路,如乙太網路、FDDI或者光纖、ATM等等。此外,還使用標準的網路通訊協定以建立進行節點間的通訊機制。這些都保證叢集通訊的有效進行。
  • 增強可用性:叢集化提供了一個成本有效方法以增加一個系統的可用性,比起主流的組件級容錯產品,叢集往往能夠提供更合理的花費以達到效果。商用領域多數以加強系統的可用性為設計目標,因此可以使用叢集中的技術加以實現。
  • 更好的效能:平心而論,叢集的誕生多少是因為效能驅動所促成的。在科學計算、工程應用、遠程虛擬現實模擬等服務領域中,叢集應該能夠提供更高的效能,允許將叢集作為超級伺服器使用,在最短的時間內完成原本單機系統無法順利完成的任務,或者是提供巨大的磁碟和記憶體空間,實現那些"不可能的任務"。

參考文獻

  • Scalable Parallel Computing Technology ,Architecture , Programming Kai Hwang Zhiwei Xu
  • Cluster Computing White Paper Mark Baker
  • High Performance Cluster Computing Architectures and Systems Volume 1 Rajkumar Buyya


關於作者
林凡,現於廈門大學從事Linux相關的科研工作。於叢集技術由很大的興趣,希望能與志同道合的朋友一起交流。您可以通過電子郵件iamafan@21cn.com 和他聯絡。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.