在分布式系統中,需要考慮的穩定性問題比較複雜,貫穿軟體系統設計態、研發態、營運態、運行態,覆蓋從IaaS、PaaS到上層SaaS系統,所有這些都可能會影響系統的穩定性。為了確保系統能夠持續穩定地工作,建議遵循以下設計原則。
面向失敗的架構設計原則
眾所周知,系統例外狀況事件是不可避免的,如網路延遲、硬體故障、軟體錯誤、突峰流量等,建議在系統設計階段就要從這些例外狀況事件引起的系統執行“失敗”出發,提供冗餘、隔離、降級、彈性等能力,旨在確保系統的高可用性和高可靠性,以應對不可避免的故障和意外發生。
面向精細的營運管控原則
由於業務的擴充和系統服務進一步拆分,分布式系統的複雜度劇增。再加上產品迭代加快,版本繁多,同時某些業務對即時性有較高要求,營運的不確定性和複雜性大幅增加。建議通過精細化的管理和可觀測手段,如版本控制、灰階發布、監控警示、自動巡檢等手段,旨在提高營運效率、確定性和穩定性。
面向風險的應急快恢原則
在一些情境下,即使設計了各種技術手段去提高系統的冗餘、保持業務的高可用,但還是避免不了生產系統故障的發生,所以需要面對故障建立一個高效的故障應急流程機制和穩定的技術平台,實現故障風險即時發現、應急團隊有效協同、處理過程準確記錄、故障快速止損和恢複以及後續故障複盤,旨在提高故障應急效率,減小故障影響,降低類似故障的再次發生,提升系統整體高可用性。