云計(jì)算系統(tǒng)的容錯(cuò)和故障恢復(fù)_第1頁
云計(jì)算系統(tǒng)的容錯(cuò)和故障恢復(fù)_第2頁
云計(jì)算系統(tǒng)的容錯(cuò)和故障恢復(fù)_第3頁
云計(jì)算系統(tǒng)的容錯(cuò)和故障恢復(fù)_第4頁
云計(jì)算系統(tǒng)的容錯(cuò)和故障恢復(fù)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡介

云計(jì)算系統(tǒng)的容錯(cuò)和故障恢復(fù)(1)云計(jì)算屬于分布式系統(tǒng),許多因素導(dǎo)致系統(tǒng)異常:首先,云計(jì)算系統(tǒng)由成百上千的節(jié)點(diǎn)組成,節(jié)點(diǎn)的失效是常事。假如節(jié)點(diǎn)的平均無故障時(shí)間是3年,則一個(gè)1000節(jié)點(diǎn)的機(jī)群,平均每天可能有一個(gè)節(jié)點(diǎn)故障.從商業(yè)成本來看,使用普通和主流的計(jì)算機(jī)(CPU,內(nèi)存、網(wǎng)絡(luò)、硬盤等)比高可靠計(jì)算機(jī)的性能/價(jià)格比更高,更何況無論多么可靠的計(jì)算機(jī)也會(huì)出現(xiàn)故障.其次,電源、網(wǎng)絡(luò)等其他硬件也會(huì)出現(xiàn)故障;第三,軟件出故障的幾率遠(yuǎn)遠(yuǎn)高于硬件;第四,各種人為因素,例如錯(cuò)誤的操作,也導(dǎo)致故障。由于這些因素,云計(jì)算系統(tǒng)需要很好地處理各種原因?qū)е碌墓收?,自?dòng)從故障中恢復(fù),并且不影響運(yùn)行中的上層的應(yīng)用程序:多副本的數(shù)據(jù)云計(jì)算分布式文件系統(tǒng)保存了數(shù)據(jù)的多個(gè)副本(例如,GFS缺省保存3份),當(dāng)某個(gè)副本失效后,分布式文件系統(tǒng)的master會(huì)在適當(dāng)?shù)臅r(shí)機(jī)啟動(dòng)副本復(fù)制,使得數(shù)據(jù)的副本數(shù)保持設(shè)定的數(shù)量,保證了數(shù)據(jù)的安全;Worker故障分布式文件系統(tǒng)的worker可能出現(xiàn)故障,master通過內(nèi)置的heartbeat/lease監(jiān)控所有worker的狀態(tài),一旦確認(rèn)某個(gè)worker故障,master會(huì)把該worker保存的數(shù)據(jù)的副本個(gè)數(shù)減一,以便系統(tǒng)在適當(dāng)時(shí)機(jī)啟動(dòng)副本復(fù)制以保證數(shù)據(jù)不會(huì)丟失;lMaster故障為了避免master成為系統(tǒng)的單點(diǎn),master也有多個(gè)副本:其中一個(gè)是主master,其余為輔master,主master承擔(dān)著master的職責(zé),例如應(yīng)答用戶和worker的請求,記錄操作日志等;輔master通過操作日志保持與主master的準(zhǔn)同步。當(dāng)主master發(fā)生故障后,在分布式選舉協(xié)議作用下,一個(gè)輔master會(huì)升級成為主master,保證系統(tǒng)的繼續(xù)運(yùn)行;l應(yīng)用程序容錯(cuò)出于容錯(cuò)和故障恢復(fù)的原因,云計(jì)算系統(tǒng)的上層應(yīng)用程序不能假設(shè)它正在或?qū)⒁褂媚膫€(gè)worker,也不能假設(shè)數(shù)據(jù)存儲(chǔ)在或?qū)⒁鎯?chǔ)到哪個(gè)worker上,當(dāng)應(yīng)用程序需要使用數(shù)據(jù)時(shí),云計(jì)算客戶端庫將詢問云計(jì)算系統(tǒng)的master獲得數(shù)據(jù)副本所在的位置,并向其中一個(gè)副本(通常是與該客戶端網(wǎng)絡(luò)“距離”最近的)發(fā)出數(shù)據(jù)請求,如果該worker在開始或者中途出現(xiàn)故障或因?yàn)槠渌驘o法完成該請求,則云計(jì)算客戶端庫會(huì)自動(dòng)轉(zhuǎn)向另外一個(gè)副本,這對上層應(yīng)用是完全透明的。云計(jì)算系統(tǒng)的容錯(cuò)和故障恢復(fù)(2)在前一篇文章中,我談到了云計(jì)算采用了數(shù)據(jù)多個(gè)副本(缺省是3),除了應(yīng)對各種軟件硬件故障外,多個(gè)副本還提高了云計(jì)算系統(tǒng)數(shù)據(jù)讀服務(wù)能力:每個(gè)副本都可以獨(dú)立提供讀服務(wù),由于多個(gè)副本通常分布在不同的網(wǎng)絡(luò)交換機(jī)上,因此網(wǎng)絡(luò)帶寬得到更充分的利用。與此同時(shí),多個(gè)副本增加了數(shù)據(jù)寫入的成本:寫入數(shù)據(jù)時(shí)要同時(shí)在多臺(tái)機(jī)器上寫入,占用了更多的磁盤空間,傳輸數(shù)據(jù)要跨多個(gè)網(wǎng)絡(luò)交換機(jī)。由于通常情況下數(shù)據(jù)的讀出次數(shù)遠(yuǎn)多于寫入次數(shù),這樣獲得了更好的整體性能。一個(gè)問題是:為什么缺省用3個(gè)數(shù)據(jù)副本而不是2個(gè)或4個(gè)?讓我們用一個(gè)非常簡化的模型來分析使用3個(gè)副本時(shí)數(shù)據(jù)的可靠性如何,或者說,數(shù)據(jù)丟失的可能性有多大。為了簡單起見,讓我們把問題局限在節(jié)點(diǎn)計(jì)算機(jī)上,假設(shè)總共有N個(gè)節(jié)點(diǎn)計(jì)算機(jī),它們的平均無故障時(shí)間都是M,云計(jì)算系統(tǒng)對一個(gè)數(shù)據(jù)副本丟失并進(jìn)行復(fù)制的時(shí)間為T,則一臺(tái)計(jì)算機(jī)在T時(shí)間內(nèi)出故障的概率是T/M,不出故障的概率是(1-T/M):N臺(tái)機(jī)器在該時(shí)間內(nèi)都不出故障的概率是(1-T/M)的N次方;N臺(tái)機(jī)器在該時(shí)間內(nèi)恰好有1臺(tái)出故障的概率是:(1—T/M)的(N—1)次方*T/M*N;N臺(tái)機(jī)器在該時(shí)間內(nèi)恰好有2臺(tái)出故障的概率是:(1-T/M)的(N-2)次方大T/M*T/M*N*(N—1)/(2*1)因此,N臺(tái)機(jī)器在該時(shí)間段內(nèi)至少有兩臺(tái)機(jī)器故障的概率是:P2(N,M,T)=1-都不出故障的概率-恰好1臺(tái)出故障的概率因此,N臺(tái)機(jī)器在該時(shí)間段內(nèi)至少有兩臺(tái)機(jī)器故障的概率是:P3(N,M,T)=1-都不出故障的概率-恰好1臺(tái)出故障的概率一恰好2臺(tái)出故障的概率因此假如N=1000,M=50,000小時(shí),T=600秒,則P2(N=10臺(tái),M=50,000小時(shí),T=600秒)=5.0*10的一10次方;P2(N=1000臺(tái),M=50,000小時(shí),T=600秒)=6.1*10的一9次方;P2(N=5000臺(tái),M=50,000小時(shí),T=600秒)=1。4*10的一4次方;P3(N=10臺(tái),M=50,000小時(shí),T=600秒)=4。5*10的-15次方;P3(N=1000臺(tái),M=50,000小時(shí),T=600秒)=6。2*10的-9次方;P3(N=5000臺(tái),M=50,000小時(shí),T=600秒)=7.6*10的一7次方;可以看出,當(dāng)機(jī)器數(shù)量達(dá)到5000臺(tái)時(shí),至少3臺(tái)機(jī)器出故障的概率低于百萬分之一,而至少兩臺(tái)機(jī)器出故障的概率高于萬分之一。因此采用3個(gè)數(shù)據(jù)副本時(shí)數(shù)據(jù)有比較高的可靠性。當(dāng)機(jī)器數(shù)量較小時(shí),例如10臺(tái)時(shí),至少兩臺(tái)機(jī)器出故障的概率也是很低的,但是,如果采用2個(gè)副本,則當(dāng)一臺(tái)機(jī)器出現(xiàn)故障時(shí),則該機(jī)器上保存的數(shù)據(jù)都變成單副本,因此云計(jì)算系統(tǒng)需要馬上做出反應(yīng),復(fù)制這些數(shù)據(jù)以避免再有一臺(tái)機(jī)器故障時(shí)導(dǎo)致的數(shù)據(jù)丟失。假如該計(jì)算機(jī)上保存了1TB數(shù)據(jù),則即使剩下9臺(tái)機(jī)器每秒復(fù)制50MB數(shù)據(jù),則仍然需要1TB/(9*50MB),約2230秒的時(shí)間,這將使得系統(tǒng)在較長時(shí)間內(nèi)對外服務(wù)性能有明顯下降。因此2個(gè)副本很少使用。云計(jì)算分布式架構(gòu)綜述傳統(tǒng)的關(guān)系數(shù)據(jù)庫由底層文件系統(tǒng)和上層表格系統(tǒng)構(gòu)成,類似地,云計(jì)算也包含了分布式文件系統(tǒng)(如Google的文件系統(tǒng)GFS)和分布式表格系統(tǒng)(如Google的Bigtable)兩個(gè)部分,其中分布式文件系統(tǒng)實(shí)現(xiàn)可靠、高效的數(shù)據(jù)存儲(chǔ)和處理,分布式表格系統(tǒng)在分布式文件系統(tǒng)的基礎(chǔ)上實(shí)現(xiàn)表的各種處理邏輯,例如查詢、修改、掃描等.此外,鑒于開發(fā)和調(diào)試分布式程序有比較大的難度,實(shí)現(xiàn)高效的分布式程序挑戰(zhàn)更大,因而云計(jì)算還有一個(gè)分布式計(jì)算系統(tǒng)(MapReduce),通過它,云計(jì)算上的分布式程序開發(fā)變得易如反掌,運(yùn)行效率卻大大提升°MapReduce既可以運(yùn)行在分布式的表格系統(tǒng)上,也可以直接運(yùn)行在分布式文件系統(tǒng)上,達(dá)到很高的并行度,獲得很好的效率。云計(jì)算系統(tǒng)常常是單一主控機(jī)(singlemaster)+多工作機(jī)(manyworkers)模式,worker實(shí)現(xiàn)數(shù)據(jù)的存儲(chǔ)、讀寫、分析處理等,master保存部分或全部元數(shù)據(jù)、實(shí)現(xiàn)worker的任務(wù)分配、狀態(tài)監(jiān)控、負(fù)載平衡、故障監(jiān)測和故障恢復(fù)等°Master常常使用heartbeat+lease或類似機(jī)制監(jiān)控worker的狀態(tài),向worker定期發(fā)放lease,worker在lease有效期(例如幾秒到幾十秒)內(nèi)才進(jìn)行工作,lease失效后則停止工作。如果master發(fā)現(xiàn)某個(gè)worker在過去一段時(shí)間內(nèi)沒有響應(yīng)或者出現(xiàn)其他異常,則不再向該worker發(fā)放新的lease,并在舊的lease到期后重新分配該worker上的任務(wù)。這使得master得以發(fā)現(xiàn)有故障的worker并將其從系統(tǒng)中剔除,并在適當(dāng)?shù)臅r(shí)候采取措施以避免數(shù)據(jù)丟失或者任務(wù)失敗等等,也使得系統(tǒng)管理員不需要進(jìn)行任何額外的操作就可以下線部分worker(例如機(jī)器維護(hù)、軟件硬件升級、機(jī)器淘汰等等).如果沒有其他措施,則云計(jì)算系統(tǒng)的單一master會(huì)成為整個(gè)系統(tǒng)的單點(diǎn)。為了避免這種現(xiàn)象的出現(xiàn),云計(jì)算系統(tǒng)通常還有一個(gè)分布式選舉系統(tǒng)(例如Google的Chubby),master也不再是單一master,而是單一主master+幾個(gè)輔master,輔master保持著對主master的準(zhǔn)同步,一旦主master故障,則其中一個(gè)輔master會(huì)被選舉并升級成為主master。這種選舉和升級通常需要若干秒的時(shí)間,但由于worker在lease有效期內(nèi)即使沒有master也會(huì)繼續(xù)工作,且應(yīng)用程序?qū)aster的訪問通過名字而不是IP地址,因此上層應(yīng)用程序通??床坏竭@種切換,或者是一個(gè)短暫的停頓。以上只是對云計(jì)算分布式架構(gòu)的一個(gè)簡單描述,在后續(xù)的文章中我還會(huì)對各個(gè)部分進(jìn)行較為詳細(xì)的說明。云計(jì)算之分布式文件系統(tǒng)云計(jì)算的分布式文件系統(tǒng)(如Google的GFS)是整個(gè)云計(jì)算的基石,提供上層表格系統(tǒng)所需的可靠和高效的數(shù)據(jù)存儲(chǔ),假設(shè)是:l容錯(cuò)與自動(dòng)故障恢復(fù)是DNA整個(gè)文件系統(tǒng)由許多廉價(jià)計(jì)算機(jī)組成,機(jī)器故障是常事而非例外,系統(tǒng)需要不停地進(jìn)行自我檢測和監(jiān)控,發(fā)現(xiàn)故障機(jī)器并自動(dòng)恢復(fù);l系統(tǒng)存儲(chǔ)大文件而非小文件整個(gè)文件系統(tǒng)存儲(chǔ)數(shù)百萬數(shù)千萬的100MB或更大尺寸的文件,而不是數(shù)十億的KB尺寸小文件,支持對小文件的創(chuàng)建、讀寫,但不高效;l文件的主要修改是追加文件系統(tǒng)支持高效的大尺寸數(shù)據(jù)追加,特別是來自多個(gè)用戶的無鎖并發(fā)追加,小尺寸的數(shù)據(jù)追加和數(shù)據(jù)的改寫也支持,但不高效;l高效的大尺寸順序讀大尺寸的順序讀數(shù)據(jù)十分高效,小尺寸隨機(jī)讀相對比較低效;l持續(xù)可用的網(wǎng)絡(luò)帶寬比低的單次讀寫延時(shí)更加重要多數(shù)上層應(yīng)用程序?qū)?shù)據(jù)吞吐量有較高的要求,但對單次讀寫時(shí)間沒有很高的要求。保持持續(xù)可用的網(wǎng)絡(luò)帶寬比保證每次讀寫的低延時(shí)有更大的意義。在云計(jì)算的分布式文件系統(tǒng)中,數(shù)據(jù)被分成固定大小的塊,即chunk(在GFS中是64MB)。由于可靠性和性能的需求,每個(gè)chunk在系統(tǒng)中有若干份拷貝(缺省是3份),保存在不同的worker上。此外,這3份拷貝通所在的worker通常位于不同的機(jī)架和不同的網(wǎng)絡(luò)交換機(jī),因此一個(gè)機(jī)架或交換機(jī)故障不會(huì)導(dǎo)致數(shù)據(jù)不可用。把多個(gè)拷貝分布到不同交換機(jī)上進(jìn)一步提高了數(shù)據(jù)讀出的可用網(wǎng)絡(luò)帶寬,增加了數(shù)據(jù)讀出的性能,但卻增加了寫入時(shí)在不同交換機(jī)之間傳輸?shù)臄?shù)據(jù)量,增加了寫入成本,由于數(shù)據(jù)的讀遠(yuǎn)遠(yuǎn)多于對數(shù)據(jù)的寫,這種做法提高了系統(tǒng)的總體性能。與云計(jì)算架構(gòu)的其他子系統(tǒng)一樣,云計(jì)算的分布式文件系統(tǒng)采用了“單一master+多個(gè)worker”的結(jié)構(gòu),其中worker保存chunk數(shù)據(jù)的拷貝,master保存了文件和目錄的名字空間、文件到chunk的映射、當(dāng)前worker列表、chunk拷貝在當(dāng)前worker上的分布等。此外,master還記錄了worker的chunk數(shù)據(jù)大小、可用磁盤空間、數(shù)據(jù)讀寫次數(shù)等,并在必要的時(shí)候進(jìn)行chunk遷移以便實(shí)現(xiàn)負(fù)載的相對平衡.云計(jì)算的分布式文件系統(tǒng)還提供了客戶端庫,應(yīng)用程序通過客戶端庫訪問文件數(shù)據(jù)。例如,當(dāng)客戶端需要讀出一個(gè)文件從某個(gè)位置開始的數(shù)據(jù)時(shí),客戶端庫通過詢問master獲得該文件的指定位置所在的chunk以及該chunk所在的worker列表,客戶端庫再向其中的一個(gè)worker(通常是離該客戶端網(wǎng)絡(luò)距離最近的worker)發(fā)起讀chunk(指定的偏移值和指定的長度)的請求,worker讀出指定的數(shù)據(jù)后返回給客戶端庫,客戶端庫再返回給應(yīng)用程序。以上對云計(jì)算的分布式文件系統(tǒng)做了一個(gè)大致描述,后續(xù)文章還有更多的敘述。云計(jì)算之分布式表格系統(tǒng)云計(jì)算的分布式表格系統(tǒng)依賴于下層的分布式文件系統(tǒng)(如Google的GFS)提供可靠和高效的數(shù)據(jù)存儲(chǔ),也是分布式文件系統(tǒng)的主要使用者.本文以Google的Bigtable為例來介紹云計(jì)算的分布式表格的基本結(jié)構(gòu),其數(shù)據(jù)模型是:(row:string,column:string,time:int64)—>value:stringl行(row)行(row)是二進(jìn)制串,最大長度為64KB(實(shí)際應(yīng)用中,大部分行字符串為10?100字節(jié))。對統(tǒng)一行內(nèi)的數(shù)據(jù)的讀或?qū)懣偸窃拥?。分布式表格系統(tǒng)總是把整個(gè)表格按行(row)排序(字典序),然后按整行動(dòng)態(tài)切分,每個(gè)切分后的塊稱為一個(gè)子表(tablet,在Google的Bigtable中,每個(gè)子表一般不超過256MB),子表也是分布式表格系統(tǒng)的worker加載/卸載和負(fù)載平衡的基本單元。在網(wǎng)頁庫表格中,行(row)是網(wǎng)頁的URL,但其中的域名部分被顛倒了,例如/indexohtml變成了com.google。maps/index.html,這樣使得域名相似的網(wǎng)頁聚集在一起,由于域名相似的網(wǎng)頁在內(nèi)容上往往有一定的相似性,因此可以產(chǎn)生更高的壓縮倍率,并使得一些應(yīng)用程序更加高效。l歹U(column)列按列族(columnfamily)分組,同一列族內(nèi)的單元格的內(nèi)容常常相同,并用修飾詞(qualifier)區(qū)分不同的單元格,即column="family:qualifier"。一個(gè)表格內(nèi)的列族個(gè)數(shù)是有限的(例如最多上百個(gè))且一般由可打印字符組成,但修飾詞(qualifier)的個(gè)數(shù)沒有任何限制且可以是任意字符。例如,網(wǎng)頁庫表格中,content(網(wǎng)頁內(nèi)容)可以是一個(gè)列族,language(語言)可能是另外一個(gè)列族。出于進(jìn)一步的性能優(yōu)化的考慮,Bigtable還允許用戶把內(nèi)容相似或相關(guān)的列族組成局部群組(localitygroup),同一局部群組內(nèi)的列族的數(shù)據(jù)常常存放在一起,這樣可以加快它們的訪問速度;用戶還可以把某些局部群組設(shè)定為裝入內(nèi)存,這樣訪問這些群組時(shí)就不需要訪問磁盤。列族是權(quán)限控制的基本單元:有些用戶可以添加新數(shù)據(jù)、修改已經(jīng)存在的數(shù)據(jù),有些用戶只能讀已經(jīng)存在的數(shù)據(jù),還有一些用戶連已經(jīng)存在的數(shù)據(jù)都不能讀。局部群組則是數(shù)據(jù)壓縮的基本單元,用戶可以對不同的局部群組指定不同的壓縮算法或者同一壓縮算法的不同參數(shù),等等;l時(shí)間戳?xí)r間戳是64位整數(shù),可以用來表示真正的時(shí)間(例如網(wǎng)頁抓取的時(shí)間),這時(shí)它的單位是微秒,時(shí)間戳也可以是用戶指定的任意值.Bigtable允許用戶(針對列族)指定保存最新的多少個(gè)時(shí)間戳版本或者從現(xiàn)在起多長時(shí)間內(nèi)的版本(如一周以內(nèi)所有版本),例如,在網(wǎng)頁庫表格中設(shè)置為保留最新的3個(gè)版本,超出的版本則被垃圾回收;

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論