可靠性,可擴展性,可維護性

0 概述

本文主要介紹如何設計一個可靠性、可擴展性
、可維護性數據系統。

1 可靠性(Reliability)

  • 應用程序表現出用戶所期望的功能。
  • 允許用戶犯錯,允許用戶以出乎意料的方式使用軟件。
  • 在預期的負載和數據量下,性能滿足要求。
  • 系統能防止未經授權的訪問和濫用。
    硬件故障:如某個機房或者某個機器掛了(內存問題、磁盤問題等),整個系統對外仍舊可以正常使用。一般策略是異地多活,當某一個機房掛了,其它機房仍舊可以繼續提供服務,硬件故障一般不會同時發生。
    軟件故障:如JVM bug,在接受特定輸入觸發;操作系統bug,在特定輸入條件會死機。導致這類軟件故障的BUG通常會潛伏很長時間,直到被異常情況觸發爲止。這類故障沒有快速恢復辦法,可以通過重啓應用。可以通過做好監控、測量並分析系統行爲。
    人爲錯誤:設計並構建了軟件系統的工程師是人類,維持系統運行的運維也是人類。系統配置錯誤、代碼bug(如邊界條件),異常處理問題等。如何降低人爲的錯誤:1)以最小化犯錯機會的方式設計系 2)將人們最容易犯錯的地方與可能導致失敗的地方解耦 3)在各個層次進行徹底的測試,從單元測試、全系統集成測試到手動測試 4)允許從人爲錯誤中簡單快速地恢復,以最大限度地減少失效情況帶來的影響。如快速回滾,灰度、分批發布等策略。5)明確的系統監控,比如性能指標和錯誤率。

2 可擴展性(Scalability)

這裏可擴展性(Scalability)是用來描述系統應對負載增長能力的術語。系統今天很好運行,不代表在雙11大促也能很好的運行。當系統用戶使用量由1-》100w人使用這個系統能否可靠運行。
描述負載:載可以用一些稱爲負載參數的數字來描述。參數的最佳選擇取決於系統架構,它可能是每秒向Web服務器發出的請求、數據庫中的讀寫比率、比如下單 300tps,訂單查詢500qps。
性能:系統響應時間,load、CPU。

當面對突發流量,系

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