【DDIA閱讀】1.可靠,可拓展與可維護的應(yīng)用系統(tǒng)

應(yīng)用設(shè)計的三大核心目標

  • 可靠
  • 可拓展
  • 可維護

可靠性

可靠性的解釋:即使發(fā)生了某些錯誤,系統(tǒng)也可以正常工作

故障可以分為硬件故障和軟件錯誤還有人為失誤

硬件故障:例如硬盤壞了,網(wǎng)絡(luò),電力故障等。人們通常通過冗余來解決這種故障,例如RAID,雙電源等。也可以通過軟件容錯,例如可以一個系統(tǒng)的部分打補丁重啟,而不需要重啟整個系統(tǒng)。

軟件錯誤:例如代碼里的bug,還有軟件服務(wù)A依賴的其他服務(wù)除了問題,或是級聯(lián)的組件故障等。這些可以通過測試,系統(tǒng)監(jiān)控等方式緩解

人為失誤:例如一些維護人員錯誤配置了應(yīng)用

可拓展性

可拓展性是用來描述系統(tǒng)應(yīng)對負載增加能力的術(shù)語

負載可以通過負載參數(shù)來描述,如果選擇參數(shù)取決于系統(tǒng):例如數(shù)據(jù)庫寫入比例,每秒處理用戶請求個數(shù)

負載增加后,有兩種考慮方式

  • 負載增加,但是系統(tǒng)資源不變,系統(tǒng)性能會發(fā)生什么變化
  • 負載增加,但是要保持系統(tǒng)性能不變,要增加多少資源

不同的系統(tǒng)會關(guān)注不同的性能點,批處理系統(tǒng)會關(guān)注吞吐量,而在線系統(tǒng)會關(guān)注響應(yīng)時間

延遲(latency)和相應(yīng)時間(response time)是不同的:延遲是針對服務(wù)端,指的是處理請求的時間。響應(yīng)時間是針對客戶端,指的是發(fā)出請求到看到響應(yīng)的間隔,包括網(wǎng)絡(luò)傳輸?shù)葧r間

相應(yīng)時間不是某一個具體的數(shù)字,而是一個數(shù)值分布。不能用平均值來估計相應(yīng)時間,應(yīng)該用百分位數(shù),中位數(shù)就是50百分位數(shù),一個系統(tǒng)應(yīng)該關(guān)注較高的百分位數(shù)(例如99.99%),關(guān)注到很慢的那一部分用戶的時間,避免產(chǎn)生長尾效應(yīng)

如何應(yīng)對負載增加:

  • 考慮系統(tǒng)設(shè)計的負載量級,已經(jīng)量級增加時應(yīng)該如何設(shè)計
  • 無狀態(tài)的服務(wù)可以擴展到多臺機器
  • 針對應(yīng)用設(shè)計系統(tǒng)架構(gòu)

可維護性

三個設(shè)計原則:

  • 可運維性:方便運營團隊保持系統(tǒng)平穩(wěn)運行,運維更輕松
  • 簡單性:系統(tǒng)易于新工程師理解,簡化復(fù)雜度,最好的手段之一是抽象,例如高級編程語言隱藏了寄存器內(nèi)存等,SQL抽象了數(shù)據(jù)結(jié)構(gòu)和磁盤操作
  • 可演化性:方便后續(xù)改進,修改,易于改變,是指整個屬性系統(tǒng)的敏捷性(多個應(yīng)用服務(wù)互相協(xié)作構(gòu)成)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容