A 系統架構概要

2021-09-20 13:07:08 字數 2657 閱讀 9166

a. 系統架構概要

概述 歷史

第一次軟體危機(20世紀60年代~20世紀70年代) 

解決方案:拋棄goto的結構化程式通過「自頂向下、逐步細化、模組化」的方法,將軟體的複雜度控制在一定範圍內,從而從整體上降低了軟體開發的複雜度。 

第二次軟體危機與物件導向(20世紀80年代)

第一次軟體危機的根源在於軟體的「邏輯」變得非常複雜,而第二次軟體危機主要體現在軟體的「擴 展」變得非常複雜。

概念軟體架構指軟體系統的頂層結構

系統與子系統

模組與元件

模組: 從業務角度分析,功能職責

元件:從技術角度分析,功能復用

框架與架構

框架關注的是規範

架構關注的是結構

基本思想

技術:關鍵思維是邏輯和實現

技術的基礎是演算法,解決的是具體的業務問題

工程:工程的關鍵思維是判斷和取捨

工程的基礎是架構和專案管理

架構:解決的是具體的業務場景

專案管理:解決的是人員協作問題

行業解決方案:分析和解決問題的能力,制定行業標準

架構圖邏輯/業務角度

技術/物理角度

架構 4 +1 檢視

架構四元素:問題、模組、規則、系統

本質:面對複雜和變更的挑戰,在有限的資源條件下,保證業務的響應

目的:架構設計的主要目的是為了解決軟體系統複雜度帶來的問題。

系統複雜度 - 高效能

衡量指標

響應時間、tps、伺服器資源利用率等客觀指標

使用者的主觀感受(從程式設計師、業務使用者、終端使用者/客戶不同的視角,可能會得出不同的結論)

單台計算機內部為了高效能帶來的複雜度;

軟體方面

批處理多程序

多執行緒硬體方面:多cpu

smp(symmetric multi-processor,對稱多處理器結構)

numa(non-uniform memory access,非一致儲存訪問結構)

mpp(massive parallel processing,海量並行處理結構)

多台計算機集群為了高效能帶來的複雜度。

任務分配:任務分配器

任務分解:任務分解帶來的效能收益是有乙個度的,並不是任務分解越細越好,而對於架構設計來說,如何把握這個粒度就非常關鍵了。

簡單的系統更加容易做到高效能

可以針對單個任務進行擴充套件

解決方案

垂直維度

cpu:演算法優化、增加核數

記憶體:增大記憶體

磁碟io:固態硬碟

網路io:公升級頻寬

水平維度

功能分解:基於功能將系統分解為更小的子系統

多例項副本:同一元件重複部署到多台不同的伺服器

資料分割:在每台機器上都只部署一部分資料

系統複雜度 - 高可用:無中斷、無單點、冗餘機器

核心思想:**高可用的主要技術手段是服務與資料的冗餘備份與失效轉移。

衡量指標

**不可用時間=完成故障修復的時間點 - 故障發現的時間點

**年度可用時間=年度總時間 - **不可用時間

可用性型別

計算高可用

儲存高可用 - 資料一致性

**式/單點

協商式/主備

民主式:一主多從

集群高可用

服務治理

監控解決方案

架構角度

應用伺服器。可通過負載均衡裝置將多個應用伺服器構建為集群對外提供服務(前提是這些服務需要設計為無狀態,即應用伺服器不儲存業務的上下文資訊,而僅根據每次請求提交的資料進行業務邏輯的操作響應),當均衡裝置通過心跳檢測手段檢測到應用伺服器不可用時,則將其從集群中移除,並將請求切換到其他可用的應用服務上。

(2)服務層伺服器。這些伺服器被應用層通過分布式服務框架(如dubbo)訪問,分布式服務框架可在應用層客戶端程式中實現軟體負載均衡,並通過服務註冊中心提供服務的伺服器進行心跳檢測,當發現有伺服器不可用時,立即通知客戶端程式修改服務列表,同時移除響應的伺服器。

(3)資料伺服器。需要在資料寫入時進行資料同步複製,將資料寫入多台伺服器上,實現資料冗餘備份;當資料伺服器宕機時,應用程式將訪問切換到有備份資料的伺服器上。

系統複雜度 - 可擴充套件

目標伴隨業務的發展、創新,執行環境的變化,對技術也就提出了更多、更高的要求。能夠快速響應上述變化,並最大程度降低對現有系統的影響,是設計可擴充套件性好的架構的主要目的。

核心:正確**變化、完美封裝變化

在業務維度,**變化

在技術維度,封裝變化

其他手段

使用分布式服務(框架)構建可復用的業務平台。

使用分布式訊息佇列降低業務模組間的耦合性。

原則:低耦合、高內聚

其他 低成本

往往只有「創新」才能達到低成本目標

引入新技術。

開創乙個全新技術領域。

安全性型別

功能安全:比如說系統漏洞

架構安全

資料安全性

規模:規模帶來複雜度的主要原因就是「量變引起質變」

1. 功能越來越多,導致系統複雜度指數級上公升

2. 資料越來越多,系統複雜度發生質變

WF架構概要設計

最近在學習wf,好久沒有這麼長時間持續看書了,我覺得有點學習疲勞.順帶一提很奇怪,在codeplex上面沒有找到什麼以wf實現工作流的專案,於是我就面臨乙個問題 如何在實際應用中使用這個框架呢?初步構思,有這麼三種形式 1.將wf寫成靜態工具類的模式.在這種情況下,每次都需要根據活動的當前狀態來設定...

SOA架構設計概要

主要內容也是來自 stevey對amazon和google平台的長篇大論 我們理解的soa必然是通過介面的方式將資料與功能開放出來的,但要想要往平台方向發展,必須保證用且僅用服務介面的形式提供資料和服務 團隊間的程式模組的資訊通訊,都要通過這些介面 除此之外沒有其它的通訊方式。其他形式一概不允許 不...

軟體架構師之架構過程概要

軟體架構是軟體系統乙個高層次的結構體現,顯示了系統分解後元件的布局和元件之間的關係。好的架構描述應該包含架構的多個視角,元件的設計和擴充套件描述,以及為滿足功能性需求和非功能性需求的設計原則。一般說,軟體架構分為5個步驟,1.建立架構的任務並且形成架構團隊。2.建立並且文件化架構需求。3.設計架構 ...