分散式系統中的各種故障
恢復故障可能是一個複雜的問題,尤其是在分散式系統中,其中可能有多個參與裝置和多個故障點。查詢程式中的不同角色並詢問每個角色“如果程式的該部分發生故障會發生什麼?”是非常有啟發性的。設計一個能夠從故障中恢復的可靠系統需要識別系統必須處理的故障型別。
在分散式系統中,我們需要處理主要四種類型的故障:
- 事務故障(中止),
- 站點(程式)故障,
- 介質(磁碟)故障,以及
- 通訊線路故障。
其中一些是由於硬體引起的,另一些是由於軟體引起的。
執行失敗/方法失敗
在任何系統中,事務都可能由於各種原因而失敗。未能執行可能是由於事務中由不正確的輸入資料引起的錯誤以及檢測到當前或潛在的問題。此外,一些並發現金管理演算法不允許事務繼續或等待它們當前嘗試訪問的資料被另一項服務檢索。這可以被視為一種故障。
在發生事務故障時採取的最常見方法是採取措施,從而將資料庫重置到此事務開始之前的原始狀態。
站點(系統)故障
系統故障的原因可以透過識別它是硬體故障還是軟體故障來追溯。系統故障通常被認為會導致核心記憶體內容丟失。因此,由於系統故障,主記憶體中的任何資料庫部分都會丟失。但是,儲存在輔助儲存器上的資料庫被認為是安全且準確的。
在分散式資料庫名稱中,系統故障被稱為站點故障,因為它們會導致故障站點在分散式系統中的其他站點上不可用。
我們通常在分散式系統中區分輕微故障和完全故障。完全故障意味著分散式系統中所有站點的同時故障;部分故障僅反映特定站點的故障,而其他站點仍然可以執行。可以透過儘快重新啟動系統並在識別出故障點後更換故障點來恢復。
介質故障/輔助儲存裝置
介質故障是指輔助資料儲存裝置的故障。此類故障可能是由於作業系統錯誤和硬體錯誤(如頭故障或控制故障)引起的。關鍵點是,第二個存檔中的全部或部分資料庫被認為是退化的且無法訪問的。整合磁碟儲存和歸檔是處理此類災難性問題的常見策略。
介質故障通常被視為區域性問題,因此,不能在分散式 DBMS 系統的可靠性中直接解決。
通訊故障
有許多型別的通訊故障。最常見的錯誤是訊息排序錯誤、訊息丟失和通訊線路故障。前兩個錯誤是計算機網路的功能;我們不會進一步研究它們。因此,在我們的 DBMS 忠誠度分佈談判中,我們期望計算機網路和軟體下的硬體確保從特定站點的站點從一個程序到目的地的兩個傳送的訊息在沒有任何錯誤的情況下發送。
丟失或未經請求的訊息通常是通訊線路故障或(目標)站點故障的結果。如果通訊線路發生故障,除了丟失傳送的訊息外,它還可能將網路分成兩個或多個不相關的組。這稱為網路碎片。如果網路被碎片化,則每個分割槽中的站點可能會繼續執行。在這種情況下,進行訪問儲存在多個分割槽上的資料的交易成為一個重大問題。
資料結構
網路
關係型資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP