架構設計原則

2021-10-02 15:56:52 字數 1466 閱讀 1899

「電腦科學領域的任何問題都可以通過增加乙個間接的中間層來解決。」

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

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

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

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

拆分與可控性

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

抽象與復用性

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

高效能高效能,邏輯優化,空間換時間,非同步並行等方式,盡可能引入非同步化與並行化,提高服務的響應能力,高併發,手段主要是非同步(執行緒池、訊息佇列)、並行(序列改並行),快取(本地快取、分布式快取),拆分熱點以分散瓶頸

可靠性 

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

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

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

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

安全性安全性,乙個系統應該可以支援資料流進入和出去時有***做處理

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

可擴充套件性

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

可維護性

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

分布式服務框架選型

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

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

空間換時間

就需要使用快取將常用的資料盡量前置,同樣可以保護後端的系統。

最終一致性解決方案

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

架構設計原則

知乎 馮慶 常見架構設計方案質量屬性點有 效能 可用性 硬體成本 專案投入 複雜度 安全性 可擴充套件性等。在評估這些質量屬性時,需要遵循架構設計原則 1.合適原則,2簡單原則,避免貪大求全,基本上某個質量屬性能夠滿足以 一定時期業務發展就可以了。屬性 集群方案 拆分方案 備註 效能 中,繼續擴充套...

軟體架構 設計原則

一般乙個系統包括架構模式 設計模式 軟體框架等。一般乙個系統包括架構模式 設計模式 軟體框架等。設計模式是在解決問題的過程中,一些良好思路的經驗整合,常見的是gof 23種設計模式。gof 23種設計模式的一些指導設計原則 1 開閉原則 ocp 乙個軟體實體應當對擴充套件開放,對修改關閉。抽象化 是...

軟體架構設計原則

通常,我們在開發乙個完成專案的時候,總會談到要進行軟體架構設計,那麼為什麼要進行軟體架構設計呢,肯定是為了方便軟體後期的維護性 擴充套件性和易讀性。軟體開發設計有七大原則 開閉原則 有利於軟體的穩定性和可維護性 依賴倒置原則 減少類與類之間的依賴,高層模組與底層模組之間的依賴,實現與抽象 單一職責原...