模組、物件、元件本質上是對達到一定規模的軟體進行拆分
成功軟體專案的最重要因素就是設計,架構師、設計師需要在業務和技術中尋找乙個平衡點平衡點的把握,就是架構設計中的取捨問題
為什麼要架構設計
因為開發流程需要
因為架構很重要
每個系統都要做設計
為了高效能、高可以、可擴充套件
為了解決軟體系統複雜度帶來的問題
通過理解和熟悉需求,識別系統複雜性所在的地方
高可用
低延遲
任務分解
本質上都是通過資料和服務的「冗餘」實現高可用
高效能與高可用的區別
高效能增加機器目的在於「擴充套件」處理器效能
高可用增加機器目的在於「冗餘」處理單元
複雜度需要增加任務分配器
任務分配器與業務伺服器之間的連線互動管理
任務分配器需要增加分配演算法
複雜度資料傳輸延遲或者中斷
減少或者規避資料不一致對業務的影響
複雜度**者
協商式
民主式
兩個基本條件:正確**變化、完美封裝變化
複雜度不是每個擴充套件點都需要考慮
不能完全不考慮擴充套件點
所有**都存在出錯的可能性
複雜度拆分「變化層」和「穩定層」
提煉「抽象層」和「實現層」
what
軟體內部
軟體外部
why快速響應變化,最大程度降低對現有系統的影響
how業務角度
技術角度
架構角度
應用層面
服務層面
儲存層面
結合資源、業務、場景等各種約束條件
複雜的表現
結構複雜
邏輯複雜
軟體架構需要根據業務發展不斷變化
誤區試圖一步到位,應對所有變化
複雜度**
過度設計問題
系統複雜,運維效率低下
版本發布需要多個系統配合
子系統太多,小問題不斷
正確做法
效能計算
常見錯誤
設計最優的方案
只做乙個方案
備選方案過於詳細
備選方案3-5個最佳,方案差異要明顯
360度環評,根據質量屬性點並結合優先順序進行評估
常見質量屬性點:
效能可用性
硬體成本
專案投入
複雜度安全性
可擴充套件性
避免推翻備選方案
對備選方案關鍵細節有較深入的理解
通過分步驟、分階段、分系統的方式,盡量降低系統複雜度
Mysql5 6 從零開始學 讀書筆記
安全等於運算子 可以用來判斷null值。between and 運算子 4 between 2 and 5 1 least 2,0 0 用於返回列表中最小的值。當引數為整型或者浮點型時,least返回最小的值 當引數為字串時,返回字母表中順序考前的字元 當比較值列表中有null時,不能判斷大小,返回...
從零開始學編碼1
我記得小時候學的課文,地下黨同志 前,將一把笤帚放到窗外,接頭的同志看到這個就知道這個地方不安全。我們看諜戰片的時候經常會有暗語,特殊聲音或標誌來通知自己的同志一些重要資訊。還有就是常見的發電報,滴滴噠噠的聲音。這些暗語,聲音,標誌,甚至於擺放特殊的笤帚。就是編碼,編碼重於約定。小時候我經常會想著,...
從零開始學架構 00學習
這個專欄躺在極客時間裡已經躺了很久了,有空的時候才會去聽它,斷斷續續的學習沒有多大效果。還是希望能有時間系統的學習一遍,所以才會整理這份學習筆記,希望寫完了還回再回過頭看看吧。廢話不多說,直接總結乾貨。1.架構設計相對程式設計來說思維方式有很大的差異。架構設計是判斷和取捨,程式設計是邏輯和實現。2....