高可用架構設計的六個方法
在架構設計之初,要避免單點故障,路由、防火牆、負載均衡、反向代理及監控系統等在網路和應用層面上必須全部是冗餘設計,以此來保證最佳的可用性。下面介紹一些提高系統可用性的常規方法。
1.服務冗餘
主備模式是傳統的服務冗餘方法之一,根據策略又可分為N+1、N+2 等模式。N+1的主備模式,即將兩個裝置綁成裝置對兒。針對頻繁變更的系統,單純的主備模式不夠用,由此建議至少部署N+2個例項。N+2的主備模式能夠保證一個例項發生變更時,如果第二個例項發生故障,至少還有一個例項保證業務不中斷。
2.負載均衡
負載均衡已經是高可用架構中重要手段,通過按權重負載均衡、按地域就近訪問等手段提升系統的整體效能,避免因為過載而導致整個系統全地域失效。
3.服務無狀態化
所謂無狀態化是指每個服務例項的服務內容和資料都是一致的,如果服務是無狀態的,可對服務隨時進行擴縮容。目前微服務的主流趨勢,有利於服務在各個容器雲平臺上的部署。如果服務是有狀態的,那麼邏輯處理是依賴於資料的,應該將“有狀態”的資料部分剝離出來,藉助擅長資料同步的中介軟體使資料實現集中管理,保證資料的一致性,如圖1所示。
圖1 服務無狀態化
4.服務拆分
將一個大的系統拆分成多個獨立的小模組,各個模組之間相互呼叫,是減少故障影響範圍的主要手段,如圖2所示。將複雜的業務進行拆分以降低複雜度。讀寫分離是拆分的一種方式。寫請求依賴主資料裝置,讀資料依賴備資料裝置。當出現故障時,可以只開發讀服務,寫服務暫時關閉,從而減少了故障的影響面。但需要關注資料的一致性問題。
圖2服務拆分
5.服務降級
服務降級是當故障發生時減少故障所造成的損失,常見的流量管理手段有限流和熔斷。限流可以結合業務進行自定義配置,優先保證核心服務的正常響應,非核心服務可直接關閉。熔斷是客戶端在發出請求後,無法在固定期限收到預期目標,從而採取服務降級的手段。
6.服務監控
完善的監控系統對整個系統的可靠性和穩定性是非常重要的,可靠性和穩定性是高可用的一個前提。