架構設計常用手段

計算機科學領域的任何問題都可以通過增加一個間接的中間層來解決。"

實現功能性需求是當前的明確地,非功能性需求是應對未來未知需求

架構是系統非功能性需求的解決辦法的集合

架構設計的目的基礎是滿足功能需求,主要是滿足一下特性:高性能、可用性、可靠性、可擴展性、穩定性、安全性、易用性、可維護性、靈活性

架構設計常用手段


實現架構非功能特性的一般方法

拆分與可控性

可控性,龐大且錯綜複雜關係帶來的是不可控,進行拆分隔離一方面降低問題複雜度,另一方面相互隔離避免交叉影響牽一髮動全身。思維是否跟金融監管提出的沙盒監管類似。

抽象與複用性

抽象,本質是挖掘共性總結經驗,以便下次相同情形下再使用(複用經驗)。軟件設計的抽象同樣也是為了複用,複用的前提是需要功能高度統一,即高內聚

高性能

高性能,邏輯優化,空間換時間,異步並行等方式,儘可能引入異步化與並行化,提高服務的響應能力,高併發,手段主要是異步(線程池、消息隊列)、並行(串行改並行),緩存(本地緩存、分佈式緩存),拆分熱點以分散瓶頸

可靠性

可靠性,數據與狀態一致、數據與數據一致,手段一般有對賬、重試、補償,分佈式事務也依賴通過重試機制。

高可用

高可用,一般是冗餘備份,方式一般是集群避免單點,冪等,分佈式情況下服務異常再所難免,冪等保證了流程可以重試,高可用,一方面通過限流、熔斷降級防止突發大流量造成血崩,另一方面通過異常重試、補償對偶發異常情況進行容錯,達到提高系統整體可用性。防血崩,通過隔離、限流、降級、熔斷、快速失敗等防止壓力穿透

高可用的官方定義是:描述一個系統經過專門的設計,從而減少停工時間,保持其服務的高度可用性。

冪等性

冪等機制的核心作用是保證資源唯一性,例如重複提交或服務端的多次重試只會產生一份結果。保證冪等性方法,相同入參保證相同出參,即處理過程無狀態化。避免併發影響的手段:唯一索性,加鎖先查後寫,狀態機流程化,本質上都是對資源鎖定然後串行

安全性

安全性,一個系統應該可以支持數據流進入和出去時有攔截器做處理

易用性

易用性,簡單易用符合天性

可擴展性

可擴展,對修改封閉,對擴展開放,通過抽象變化達到效果

可維護性

可維護性,單一職責,可擴展,邏輯簡單化,避免暗坑

分佈式服務框架選型

一類偏重服務治理,一類偏重跨語言支撐

要實現高併發,一般有兩個思路:異步和緩存,從縮短耗時的角度增加同時處理的事件。

空間換時間

就需要使用緩存將常用的數據儘量前置,同樣可以保護後端的系統。

最終一致性解決方案

保持最終一致性手段,定時定次數的重試、對賬修復、最大努力的嘗試消息觸達,如果超過系統自我修復的重試上限則通過告警進行人工處理。某些保留有中間狀態數據的場景可以通過更新時修正的方式修復數據


分享到:


相關文章: