一,可靠性的挑戰
1,人爲故障是線上系統故障的首要原因,應該怎麼避免
1.1簡化設計,易於測試
1.2充分測試,覆蓋場景
1.3快速回滾,降低損失
1.4完善監控
1.5規範流程,這點最重要
2,軟件故障
2.1簡單架構,降低複雜度帶來的不可控
2.2選擇穩定的軟件,包括開源
2.3要有自動恢復機制,比如限流,進程自動拉起
3,硬件故障
3.1多機服務,但會帶來數據複製和一致性問題
二,可擴展性
1,響應時間定義:客戶端發起請求,收到結果的時間
2,時延定義:服務處理請求的時長
3,如何描述性能
3.1通常性能是指吞吐量和時延
3.2時延應關注95line,99line,99.9line,平均時延會掩蓋問題
4,無狀態服務擴展相對容易,有狀態服務從單個節點擴展到分佈式多機系統複雜性會大大增加
5,很難有一種通用的架構,背後取捨因素包括數據讀取量、寫入量、待存儲的數據量、數據的複雜程度、響應時間要求等等
三,可維護性
1,可運維性,自動化與規範流程
2,簡單性,新接手的工程師易理解,消除意外複雜性的最好手段之一是抽象
3,可演化性,易於改變,比如兼容性
參考《數據密集型應用系統設計》
原文出自:https://blog.csdn.net/daiyudong2020/article/details/104453426
end