系統可靠性分析與設計

總述:這部分內容從系統可靠性定義到如何設定可靠性的數學模型,從模型的指標到怎麼去分析系統可靠性,之後是常見的可靠性設計結構,再之後是可靠性方法在硬件和軟件中常用的實現技術及案例。

 

1、系統可靠性

答:系統可靠性是系統在規定時間內及規定的環境條件下,完成規定功能的能力,也是系統無故障運行概率。在信息系統中,故障或錯誤表現爲永久性、間歇性、瞬時性這三種形式。故障在系統各個級別上從下到上依次邏輯級故障、數據結構級故障、軟件故障和軟件差錯、系統級故障。

衡量系統可靠性的指標有平均無故障時間、平均故障修復時間、平均故障間隔時間、系統可用性。常用的系統可靠性模型有時間模型、故障植入模型、數據模型。具體模型不在詳解基本原理。

 

2、系統可靠性分析

答:組合模型是分析系統可靠性最常用的方法。如果一個系統滿足:1、系統只有運行和失效兩種狀態;2、系統可以劃分成若干不重疊的子系統,每個子系統也只有運行和失效兩種狀態;3、子系統失效是獨立的;4、系統狀態只依賴於子系統的狀態,系統失效當且僅當系統中剩餘資源不滿足系統運行最低資源要求時。那麼這個系統就可以用組合模型來計算可靠性。

在這種組合的情況下,複雜系統會在局部或者整體上呈現出串聯、並聯的系統結構,還可能存在模冗餘的情況。

 

3、冗餘技術

答:提高系統可靠性的技術分爲避錯技術和容錯技術。避錯技術是通過技術評審、系統測試、正確性證明等技術,在系統運行之前避免、發現、改正錯誤。容錯是系統在運行過程中發生一定的硬件故障或軟件錯誤時,仍可以正常工作。容錯技術主要採用冗餘方法來消除故障的影響。

常見的冗餘技術有結構冗餘、信息冗餘、時間冗餘、冗餘附加四種。結構冗餘按工作方式分爲靜態冗餘、動態冗餘、混合冗餘三種。靜態冗餘也稱爲屏蔽冗餘或被動冗餘,通過表決和比較來屏蔽系統中出現的錯誤;動態冗餘也稱爲主動冗餘,通過故障檢測、故障定位、故障恢復等手段達到容錯的目的,主要方式是多重模塊待機儲備,通常做熱備和冷備;混合冗餘可獲得靜態冗餘和動態冗餘的優點,對可以屏蔽的錯誤做靜態冗餘,無法屏蔽的用動態冗餘處理,因爲混合冗餘的成本太高,只適合對可靠性要求極高的場合中使用。信息冗餘主要任務是研究編碼譯碼技術,代表性的是編碼技術當中的奇偶校驗碼、海明碼、循環冗餘校驗碼。時間冗餘是以事件爲代價減少硬件冗餘和信息冗餘的開銷來提高系統的可靠性,常用的是多次重複執行。冗餘附加是爲了實現結構冗餘、信息冗餘、時間冗餘需要的資源和技術,包括程序、指令、數據、存放和調用空間等。

將各種冗餘技術融合在一個系統中,這個系統成爲冗餘系統。一般來說,一個冗餘系統在處理運行中出現的故障時,需要經歷的步驟如下:故障檢測、故障屏蔽、故障限制、復執、故障診斷、系統重配置、系統恢復、系統重新啓動、修復、系統重組合。

軟件容錯是從硬件容錯發展出來的,主要採取N版本程序設計、恢復塊方法、防衛式程序設計等技術實現。N版本程序設計類似於結構冗餘當中靜態冗餘,一個版本佔據一個分支,通過多個分支的表決來屏蔽錯誤。N版本程序設計比通常的程序開發過程多了相異成分規範評審、相異性確認、背對背測試,這些主要是保證各版本的差異性和獨立性。在具體開發過程中,N版本程序設計除了注意通常軟件開發中的問題外,還需要考慮N版本程序同步、N版本程序間通信、表決算法、一致比較、數據相異性等問題的處理。恢復塊方法是一種動態的故障屏蔽技術,採用後向恢復策略。防衛式程序設計是通過程序中錯誤檢驗代碼和錯誤恢復代碼,在錯誤發生時,程序能撤銷錯誤狀態恢復到一個已知的正確狀態,其具體實現策略包括錯誤檢查、破壞估計、錯誤恢復三個方面。防衛式程序設計的錯誤恢復可以向前恢復,也可以向後恢復,向後恢復比較容易,有兩種處理方法:第一種是數據狀態的變換在全部程序執行完成並沒有錯誤時才進行變換,比較適合數據庫的事務處理;第二種是每隔一段時間做一個檢查點,製作安全狀態的副本,當錯誤發生時恢復到最近的檢查點,多見於應用程序。

 

4、雙機容錯技術

答:雙機容錯技術是一種軟硬件結合的容錯應用方案,該方案由兩臺服務器和一個外接共享磁盤陣列及相應的雙機軟件組成。在雙機容錯系統中,兩臺服務器一般區分爲主系統和從系統或者兩臺服務器互認爲主從關係。每臺服務器最少安裝兩塊網卡,一塊網卡連接到網絡上,對外提供服務;另外一塊網卡連接到另一臺服務器上,監測對方的工作狀態。兩臺服務器都連接到共享磁盤陣列上,磁盤陣列存放用戶數據,當一臺服務器出錯的時候,另一臺服務器主動替代工作,保證服務不中斷。雙機容錯系統採用心跳方法保證主系統和備用系統的聯繫。

雙機容錯系統根據兩臺服務器工作方式不同,分爲三種不同的工作模式:雙機熱備模式、雙機互備模式、雙機雙工模式。

雙機熱備模式在正常情況下,主服務器處於工作狀態,備用服務器處於監控準備狀態,如果沒有采用共享磁盤陣列,用戶數據同時往兩臺服務器中寫入。當主服務器出現故障時,雙機軟件將備用系統激活,保證應用在短時間內恢復正常使用,當主服務器恢復正常後可重新接入系統要回自己的應用。雙機熱備模式是目前採用較多的一種模式,多應用於證券資金服務器或行情服務器等。雙機熱備模式的缺點是備用服務器的資源利用不充分。

雙機互備模式的兩臺服務器均處於工作狀態,在提供服務的同時還檢測對方的運行情況。當一臺服務器出現故障時,另一臺服務器在短時間內將故障服務器的應用接管過來。雙機互備模式的缺點是對服務器性能要求較高。

雙機雙工模式是集羣技術的一種形式,兩臺服務器均處於工作狀態,同時提供相同的服務,通過負載均衡來保證集羣的整體性能,雙機互爲備份。

在雙機容錯系統中,雙機軟件是必不可少的。在雙機容錯系統中,一切故障的診斷、服務的切換、硬件的控制都是由雙機軟件實現的。

 

5、集羣技術

答:集羣技術是將多臺同構或者異構的計算機用集羣軟件連接在一起,組成一個高度透明的大型計算機羣,其中單個計算機系統稱爲節點。典型的集羣系統具有可伸縮性、高可用性、可管理性、高性價比、高透明性的特徵。集羣系統的性能指標是系統資源利用率,任務調度在集羣系統中是關鍵環節,任務調度的主要方法是進程遷移技術。

按照解決問題的不同,集羣系統一般分爲高性能計算集羣、負載均衡集羣、高可用性集羣。高性能集羣以解決複雜的科學計算問題爲目的,主要解決大規模計算問題、存儲和處理海量數據問題。負載均衡集羣爲企業提需求提供更有力的支撐,可有效分攤企業應用的負載。高可用性集羣致力於使計算機系統運行速度和響應速度儘可能快。在實際應用過程中,通常這三種類型會發生混合,甚至一些層面上分類並不是嚴格絕對的。

高性能計算集羣相較於傳統並行系統,具有系統開發週期短、用戶投資風險小、系統價格低、節約系統資源、系統擴展性好、用戶編程方便等特點。通信子系統是高性能計算集羣系統的中套組成部分,其性能直接影響並行計算的技術比和效率,影響通信子系統的因素有網絡帶寬、傳統TCP/IP協議、通信協議複雜的緩衝管理。負載均衡是高性能計算集羣的一個重要問題,這牽扯到集羣中節點任務分配問題,特別是在並行環境下還要基於每個節點處理效率的前提下。

負載均衡是處理節點的負載信息通過某代理軟件傳遞給均衡器,均衡器做出決策並對負載進行動態分配,使集羣中各處理節點的負載相對趨於平衡。根據負載均衡的位置不同,負載均衡分爲客戶端負載均衡和服務器負載均衡。客戶端負載均衡是指客戶端的負載均衡器根據集羣的負載及情況,主動選擇由集羣中的哪臺服務器爲其提供服務,如提供全球服務的一些銀行會有這種負載。服務器端負載均衡根據負載均衡的方式分爲集中式負載均衡和分佈式負載均衡。在負載均衡集羣中,一般將節點分爲處理節點和均衡節點兩大類,處理節點負責實際的服務處理,均衡節點保證集羣的負載平衡。及時、準確把握處理節點的負載情況,並根據處理節點的資源使用情況動態調整負載均衡的流量分佈,是負載均衡與調度考慮的關鍵問題。衡量節點當前負載狀態的度量方法和準則稱爲負載指標。理想的負載指標應滿足測量開銷低、體現競爭資源的負載、各負載指標在測量和控制上彼此獨立等條件。

高可用性集羣是一種減少服務中斷時間爲目標的計算機集羣技術,支持7*24小時運行機制。高可用性集羣的硬件包括服務器組、對外提供服務的網絡、心跳信號通路、數據共享磁盤陣列。

負載均衡有兩方面含義:第一種是大量併發訪問或數據流量分擔到多個節點上分別處理,減少用戶等待響應時間;第二種是單個重負載運算分擔到多個節點上做並行處理,每個節點處理結束後將結果彙總,返回給用戶。負載均衡的調度算法分爲靜態調度算法和動態調度算法兩大類。靜態調度算法是指調度算法在調度時不考慮節點當前負載情況,按照不同原則在調度前選擇一種均勻調度規則來完成服務請求的調度,典型的有輪轉算法、加權輪轉算法、最小連接數算法、加權最小連接數算法、源地址哈希散列算法、目標地址哈希散列算法、隨機算法等。動態調度算法在進行服務調請求的調度前,先考察節點當前的一些動態指標,根據動態指標來決定服務請求的調度,典型的有加權百分比算法等。加權輪轉算法是在輪轉算法的基礎上考慮了各節點的性能,以性能爲加權的指標。最小連接數算法是將新的請求分配給當前活動請求數量最少的節點,在各個節點處理能力相近時比較理想。加權最小連接數算法在最小連接數算法的基礎上考慮節點處理能力,以處理能力作爲加權的指標。基於局部性的最小連接數算法(LBLC)是在負載基本平衡的情況下,將相同目標IP地址的請求調度到同一個節點上,提高各個節點的訪問局部性和主存命中率。帶複製的基於局部性的最小連接數(LBLCR)也是針對目標IP地址進行負載均衡調度,它維護一個目標IP地址到一組節點的映射,當對應節點組中同一個節點沒有超載是分配到這個節點上,否則分配到另一個比較空閒的節點上。加權百分比算法考慮節點的剩餘處理能力,然後根據這個係數進行調度,算法的關鍵取決於負載指標的好壞。

在實際應用中,常用的負載均衡實現技術有基於特定軟件的負載均衡、基於DNS的負載均衡、基於NAT的負載均衡、反向代理負載均衡、混合型負載均衡。基於特定軟件的負載均衡大多需要參考網絡協議中重定向的功能,基於此功能進行負載均衡,由於網絡協議中重定向功能是無法獲得目標服務器負載的情況,所以當負載很高的時候容易產生死循環,故此負載均衡方法使用較少。基於DNS的負載均衡是在DNS服務器中爲同一個主機名配置多個IP地址,在應答DNS查詢時,DNS服務器對每個查詢將以DNS文件中主機記錄的IP地址按順序返回不同的解析結果,將客戶端的訪問引導到不同節點上,實現負載均衡的目的。基於NAT的負載均衡將一個外部的IP地址映射爲多個內部IP地址,對每次連接請求動態地轉換爲一個內部節點地址,將外部連接請求引到轉換得到地址的那個節點上,這樣可實現負載均衡的目的。反向代理負載均衡是將來自外部的連接請求以反向代理的方式動態轉發給內部網絡上的多個節點進行處理,這樣可實現負載均衡。基於NAT的負載均衡和反向代理負載均衡都具備額外的安全性,NAT處於網絡的底層可集成到硬件設備中,反向代理處於應用層可能在高負載下成爲瓶頸。

進程遷移是指當進程運行時,在源節點和目標節點之間轉移進程的行爲,因這個過程中轉移的是活躍進程,又稱爲搶佔式進程遷移。進程遷移是支持負載均衡和高容錯性的一種非常有效的手段,是實現負載均衡的基礎。在集羣系統中,利用進程遷移可以實現負載共享、提高通信性能、可用性、重新配置、使用集羣中某些節點的特殊能力。目前進程遷移算法主要有貪婪複製算法、惰性複製算法、預複製算法、基於檢查點的遷移算法等。貪婪複製算法是先掛起源節點進程,然後傳輸進程的全部狀態到目的節點後,再啓動目的節點進程。惰性複製算法先傳輸進程在目的節點上重新執行需要的最小相關信息,然後在目的節點上啓動進程。預複製算法在進程的部分或全部地址空間從源節點傳輸到目標節點後,源節點才掛起進程並傳輸核心數據。進程遷移涉及到遷移過程中的通信管理和遷移後的通信管理。進程遷移中的通信管理一般採用三種方法來處理:1、進程遷移之前發送特殊消息,通知其他進程此進程將要遷移,保證在遷移完成之前不發送任何消息給遷移進程;2、在進程遷移中,其他進程仍可以發送消息給源節點,源節點緩存所有收到的發送給遷移進程的消息,待遷移結束後,轉發這些消息;3、在進程遷移過程中,源節點拒絕收發遷移進程的消息,並要求發送者稍後將消息發到目標節點。進程遷移後通信的恢復有三種處理方法:1、消息重定位法,對應進程遷移中通信處理方法的第2種;2、消息丟失保護方法,源節點將目的節點的地址通知其他與遷移進程通信的進程,消息發送到目的節點,對應進程遷移中通信處理方法的第3種;3、消息丟失恢復法,在遷移過程中發送的消息都將丟失,待遷移完畢後重新建立連接併發送信息,對應進程遷移中通信處理方法的第1種。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章