存儲資源
存儲資源是指用于存儲和管理數據的硬件和軟件資源,包括節點的本地磁盤、分布式文件存儲、數據庫和緩存等。存儲資源的主要作用是存儲和管理系統的數據。存儲資源需要提供數據的持久性、可靠性和高效性,以滿足系統的數據存儲和訪問需求。存儲資源的性能直接影響計算資源的處理能力,存儲資源的可靠性直接影響數據的準確性。以下詳細介紹5個計算資源風險點和應對的容錯策略。
本地磁盤滿
節點的本地磁盤空間不足,無法存儲或處理更多的數據。常由日志配置不合理,磁盤容量不足等原因造成的,是比較常見的問題。可能造成數據丟失、系統崩潰等影響。常見的容錯策略如下:
使用率預警:定期監控計算節點的磁盤空間使用情況,并設置告警機制。當磁盤空間即將滿時,系統可以發送警報通知運維人員,以便及時處理。
定期清理歸檔:對于不再需要或冗余的數據,及時進行清理和歸檔。可以通過定期清理臨時文件、刪除過期的日志和備份文件等方式,釋放磁盤空間。
數據壓縮:對于需要長期存儲的數據,可以采用數據壓縮和存儲優化技術。通過壓縮數據文件、使用更高效的存儲格式,減少數據的存儲空間占用。
日志異步寫入:在磁盤滿的情況下,如果服務應用日志同步寫,會造成線程阻塞,從而造成服務無響應等問題。需要將應用日志改為異步寫入,防止因磁盤滿對在線服務造成影響。
磁盤IO負載高
磁盤IO操作非常頻繁或負載過大,導致磁盤IO性能下降或系統響應變慢的情況。磁盤性能下降,讀寫速度變慢,任務執行時間增加,系統的實時性降低,當磁盤IO負載過大無法承受時,可能導致磁盤故障、系統崩潰或數據丟失。常見的容錯策略如下:
數據緩存:將數據暫時存儲在內存中,減少對磁盤IO的頻繁訪問。可以利用內存緩存系統或操作系統的文件緩存功能,提高數據的訪問速度和磁盤IO的利用效率。
分布式存儲:將數據分布到多個計算節點的存儲設備上,采用分布式存儲系統或數據分片的方式。這樣可以分散磁盤IO負載,平衡數據訪問壓力,并利用多個計算節點的磁盤IO資源,提高系統的并發能力。
數據壓縮:對需要存儲的數據進行壓縮和存儲優化,減少磁盤IO的負載。通過壓縮數據文件、使用更高效的存儲格式等方式,減少磁盤IO的數據量和讀寫操作。
緩存穿透
大量的請求查詢或訪問不存在的數據,導致緩存無法命中,每次都需要訪問后端數據源,從而增加了后端數據庫的負載和響應時間。可能會造成系統性能下降,數據庫壓力增加等問題。常見的容錯策略如下:
布隆過濾器:使用布隆過濾器對請求進行預處理,過濾掉一部分可以明確判斷不存在的請求。布隆過濾器是一種空間效率高、判斷存在與否比較快速的數據結構,可以快速判斷請求的key是否可能存在,從而減輕后續查詢的壓力。
緩存空對象:對于查詢結果為空的請求,將空結果也存入緩存中,并設置一個較短的過期時間,這樣在一段時間內對于相同的請求不會再次查詢數據源,減少了后端訪問的負載。
限流:可以采用限流策略,對頻繁請求的來源進行限制,防止緩存穿透問題進一步擴大。
異步加載:對于緩存無法命中的請求,可以異步加載數據,并將加載后的數據存入緩存中,以便后續的請求可以命中。
預熱:同時,可以通過緩存預熱機制,在系統啟動時提前加載熱點數據到緩存中,減少緩存穿透的可能性。
數據庫連接池滿
在應用中使用的數據庫連接池已經達到設置的最大連接數,無法再創建新的數據庫連接的情況。數據庫連接池滿可能會造成響應延遲、請求阻塞、服務無法響應等問題。可以采用以下容錯策略:
配額管理:根據系統負載和需求,合理配置應用使用的最大連接數,防止因單應用服務數據庫訪問異常造成數據庫連接池滿,影響其他業務。
超時回收:在連接池中設置連接超時時間,當連接在一定時間內沒有被使用時,自動回收并釋放連接。這可以避免長時間占用連接資源,增加連接可用性。
連接復用:盡量使用連接復用的方式,即一個請求完成后,將連接釋放回連接池,供其他請求復用。
限流:可能因上游服務調用導致當前服務數據庫訪問頻次增大,導致數據庫連接數增加,超出當前服務處理的最大請求,需要當前服務具有限流能力,保障自身服務可用性。
數據庫實例異常
是指數據庫系統在運行過程中出現異常情況,導致數據庫無法正常工作或提供服務的狀態。可能原因包含數據庫服務進程異常退出、數據庫節點宕機、數據庫網絡異常等,常見的容錯策略如下:
自動重啟:當數據庫實例異常終止或崩潰時,可以設置自動重啟和恢復機制,自動重新啟動數據庫服務,并進行必要的數據恢復操作,以確保數據庫的可用性和數據完整性。
HA 切換:通過使用主備、集群、分布式等方式,確保數據庫的冗余和故障切換。當主數據庫實例出現異常時,可以自動切換到備用實例,保證系統的持續可用性。
數據備份和恢復:定期進行數據庫備份,并將備份數據存儲到可靠的位置。當數據庫實例發生異常時,可以通過備份數據進行恢復,避免數據丟失。
除以上五點外,常見的存儲資源風險點還有“掛載卷無法訪問”、“云盤讀寫IO Hang”、“依賴文件不存在”、“緩存雪崩”、“配置推送錯誤”、“數據庫IO不足”、“數據庫存儲空間不足”、“數據庫副本丟失”等。可以使用自動檢測與恢復、依賴降級、故障遷移、多級緩存、配置驗證與回滾、讀寫分離、分庫分表、多副本等容錯策略分別應對以上風險點。