首頁(yè) > 新聞 > 專家觀點(diǎn) >

數(shù)據(jù)中心2014:軟件定義的計(jì)算

2014-12-12 13:57:28   作者:   來源:ZDNet   評(píng)論:0  點(diǎn)擊:


  在《數(shù)據(jù)中心2013:硬件重構(gòu)與軟件定義》當(dāng)中,我們已經(jīng)介紹了硬件重構(gòu)與軟件定義的概念,如《生態(tài)系統(tǒng)與規(guī)模的角力》說的一樣,“軟件定義”的概念不是我們的發(fā)明,“硬件重構(gòu)”也不是,不過,把“硬件重構(gòu)”和“軟件定義”放在一起明確的提出,確是我們首創(chuàng)。

  盡管本年度的數(shù)據(jù)中心技術(shù)研究報(bào)告的標(biāo)題不會(huì)再用“軟件定義”,但是,我們?nèi)匀淮蛩憷^續(xù)談“軟件定義”,因?yàn)槲覀冇X得,盡管計(jì)算實(shí)際上受軟件的“定義”已經(jīng)很多年,但大眾離真正意義上的“軟件定義”還有很大距離,實(shí)際上,我們認(rèn)為,軟件定義網(wǎng)絡(luò)在這方面還要更先進(jìn)一些。當(dāng)然,我們也會(huì)談到生態(tài)系統(tǒng)的問題,這也實(shí)際影響到了軟件定義計(jì)算的發(fā)展路線——變成了現(xiàn)在這個(gè)樣子的原因。

  我們希望的軟件定義計(jì)算是什么樣子呢?套用Andrew S. Tanenbaum在其著作《Distributed Operating Systems》中提到的五點(diǎn):Transparency (透明性)、Flexibility(靈活性)、Reliability(可靠性)、Performance(性能)、Scalability(伸縮性)。計(jì)算機(jī)科學(xué)家Tanenbaum是Minix(一種Unix克隆操作系統(tǒng))和Amoeba(一種原生分布式操作系統(tǒng))的作者,這五點(diǎn)要求針對(duì)的是分布式系統(tǒng),而在現(xiàn)實(shí)世界中,多臺(tái)計(jì)算機(jī)組成的具有一定程度耦合的計(jì)算系統(tǒng)實(shí)際上都是分布式系統(tǒng)的一種——包含云計(jì)算、高性能計(jì)算在內(nèi),因此這五點(diǎn)要求包含了我們對(duì)實(shí)際上的計(jì)算系統(tǒng)的要求。

  分布式計(jì)算有Scale Out需求的原因,也有基于實(shí)際上地理分布計(jì)算的原因

  盡管分布式計(jì)算提起的不多,然而我們希望的軟件定義計(jì)算系統(tǒng)也同樣擁有相同的訴求,這樣的系統(tǒng)都需要通過特別開發(fā)的硬件或者軟件來達(dá)成,也就是硬件定義或者軟件定義。盡管邏輯上,我們不排除硬件上實(shí)現(xiàn)這樣的計(jì)算系統(tǒng),但毫無疑問,通過軟件實(shí)現(xiàn)可以最好地滿足其中Flexibility(靈活性)這一點(diǎn),這也是軟件定義興起的重要原因之一。

  除了Flexibility靈活性之外,Reliability可靠性、Performance性能、Scalability伸縮性這三者是互相關(guān)聯(lián)的。分布式系統(tǒng)之所以存在除了物理上需要的分布之外,還因?yàn)榉植际奖举|(zhì)上具有的容錯(cuò)性,如HA高可用性,兩地三中心等等,都是通過分散的冗余系統(tǒng)來去除單點(diǎn)失效。注意到Reliability(可靠性)和Availability(可用性)以及Fault Tolerance(容錯(cuò))的聯(lián)系與區(qū)別,一個(gè)高可靠的系統(tǒng)必然是高可用的,而且還不僅如此,高可靠的系統(tǒng)還必須保障運(yùn)作的正確性,就像在分布式存儲(chǔ)系統(tǒng)當(dāng)中,通常會(huì)通過保存多個(gè)副本來保持?jǐn)?shù)據(jù)的可用性,但是仍然需要額外的機(jī)制來保證數(shù)據(jù)的正確性——特別地,在存儲(chǔ)系統(tǒng)中就是“一致性”,實(shí)際上可靠性和一致性是需要取舍的,副本數(shù)量愈多保持一致性就越難;對(duì)于Fault Tolerance(容錯(cuò)),基于Hypervisor的底層方案已經(jīng)可以提供一些不錯(cuò)的方案,如VMware vSphere Hypervisor 6.0已經(jīng)可以提供4個(gè)vCPU的虛擬機(jī)Fault Tolerance,但是如果我們?nèi)绻枰鼜?qiáng)的虛擬機(jī)容錯(cuò)能力呢?我們希望的是可靠的計(jì)算系統(tǒng),除去無法預(yù)測(cè)的人為故障、難以消除的軟件Bug之外,我們?cè)O(shè)計(jì)的計(jì)算系統(tǒng)本身的架構(gòu)能滿足這個(gè)需求嗎?從如Amazon等等的公有云廠商偶爾出現(xiàn)的大規(guī)模故障來看,我們還有很多的工作要做。

  Active-Active,主主模式(或稱雙活)已經(jīng)算是一種比較高級(jí)的HA模式

  其次是Performance性能,性能是非常重要的,因?yàn)樾詢r(jià)比關(guān)系到運(yùn)營(yíng)成本,和整個(gè)生態(tài)系統(tǒng)都有關(guān)聯(lián),這一要點(diǎn)也是和硬件和軟件都緊密相關(guān)的。在HPC領(lǐng)域,一個(gè)重要的部件就是InfiniBand,或者說,其核心:RDMA(Remote Direct Memory Access,遠(yuǎn)程直接內(nèi)存訪問),這是一個(gè)可以加速分布式系統(tǒng)中不同節(jié)點(diǎn)通信的技術(shù),簡(jiǎn)而言之,RDMA是讓數(shù)據(jù)通信可以bypass掉操作系統(tǒng)的Kernel以及TCP/IP或者其它的協(xié)議層,以及降低數(shù)據(jù)復(fù)制的次數(shù),達(dá)到降低通信延遲的目的,一些HPC系統(tǒng)并沒有用InfiniBand而是使用了以太網(wǎng),關(guān)鍵在于高端的以太網(wǎng)也提供了RDMA的能力,并且成本更低,InfiniBand、RoCE、iWARP三種RDMA規(guī)范中后兩種就是基于以太網(wǎng)的。當(dāng)前,RDMA網(wǎng)卡的價(jià)格也已經(jīng)降低到了和普通網(wǎng)卡不太遠(yuǎn)的程度。

  RDMA(Remote Direct Memory Access,遠(yuǎn)程直接內(nèi)存訪問),允許跨網(wǎng)絡(luò)的快速內(nèi)存空間訪問

  至于軟件,有大量的工作是關(guān)于充分發(fā)揮硬件的特性,對(duì)NUMA的優(yōu)化是否已經(jīng)充分?Linux Kernel社區(qū)目前還在NUMA Awareness的內(nèi)存管理以及處理器調(diào)度方面進(jìn)行努力,而軟件定義計(jì)算上更為重要的部件——Hypervisor,在這方面的工作還未達(dá)到令人滿意的地步。此外,還有更多的硬件輔助虛擬化特性,如APICv、VMCS、VMFUNC,等等,在這方面仍然有非常多的工作可以做。

  然后是Scalability伸縮性,一套算法可能在數(shù)十上百個(gè)節(jié)點(diǎn)上工作良好,但到上千個(gè)節(jié)點(diǎn)可能就效率低下,到了更多的節(jié)點(diǎn)就徹底不能工作,不同的規(guī)模大小會(huì)影響到體系架構(gòu)的選擇,小到多達(dá)單個(gè)封裝達(dá)18個(gè)物理核心的Haswell-EP至強(qiáng)處理器,大到數(shù)百節(jié)點(diǎn)的Hadoop,MapReduce,Spark這樣的軟件計(jì)算系統(tǒng)、數(shù)量不明的Intel RSA這樣的硬件架構(gòu)、乃至數(shù)PiB級(jí)別的Ceph,GlusterFS這樣的分布式存儲(chǔ)系統(tǒng),都需要對(duì)其架構(gòu)、算法進(jìn)行衡量。我們期望的計(jì)算系統(tǒng)需要有良好的伸縮性,雖然一個(gè)算法不可能滿足所有的情況。

  Map/Reduce是一種時(shí)下很流行的大數(shù)據(jù)/分布式計(jì)算框架

  最后提到的是Transparency透明性,對(duì)于大多數(shù)人來說,透明性是最重要的一點(diǎn),它實(shí)際上和上面的Scalability伸縮性有一定聯(lián)系。透明性的含義很多,其中大概最重要的一點(diǎn)就是Single System Image(SSI,單系統(tǒng)映像),很好滿足這個(gè)要求的系統(tǒng)很少,因?yàn)闈M足它要求分布式系統(tǒng)對(duì)所有用戶來說,就像是單個(gè)系統(tǒng),區(qū)別僅僅是具備的CPU、內(nèi)存、硬盤更多更大。當(dāng)前的不少系統(tǒng)可以在不同的虛擬化層次上至少部分地滿足這個(gè)需求,例如一些超算系統(tǒng)使用作業(yè)系統(tǒng)來分發(fā)計(jì)算任務(wù)到不同的節(jié)點(diǎn),就“作業(yè)”這個(gè)應(yīng)用程序的層次來說,整個(gè)計(jì)算系統(tǒng)呈現(xiàn)的是一個(gè)單系統(tǒng)映像,然而限制也在于應(yīng)用程序?qū),只有特定的?yīng)用才有可能進(jìn)行分發(fā);另一些超算系統(tǒng)則基于各種分布式通信的庫(kù),如MPI等,只要基于這些庫(kù)進(jìn)行編程就可以應(yīng)用到更多的計(jì)算能力。更為理想地,SSI可以在操作系統(tǒng)層實(shí)現(xiàn),現(xiàn)有的多線程應(yīng)用不需要就可以透明地、自動(dòng)地應(yīng)用不同節(jié)點(diǎn)上的運(yùn)算能力。我們當(dāng)前的IaaS云計(jì)算環(huán)境很大程度上僅僅是提供了一堆松散的小虛擬機(jī),PaaS和SaaS有望提供一定程度的SSI能力。

  超級(jí)計(jì)算機(jī),在很大程度上是提供了SSI的多臺(tái)計(jì)算機(jī)的集群

  可以看到,目前的計(jì)算系統(tǒng),在Transparency (透明性)、Flexibility(靈活性)、Reliability(可靠性)、Performance(性能)、Scalability(伸縮性)這五點(diǎn)上可以做的還有很多,軟件定義計(jì)算還有很遠(yuǎn)的路要走。

分享到: 收藏

專題