軟件架構(gòu)入門_第1頁
軟件架構(gòu)入門_第2頁
軟件架構(gòu)入門_第3頁
軟件架構(gòu)入門_第4頁
軟件架構(gòu)入門_第5頁
已閱讀5頁,還剩50頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

1、軟件架構(gòu)入門 A Methodology of Software Architecture Design 中國平安 集團首席架構(gòu)師 蔡學(xué)鏞 認(rèn)識軟件架構(gòu) 架構(gòu)就是代碼的組織方式 一句話說明架構(gòu)是什么 說說這三個架構(gòu)各自的優(yōu)缺點 但架構(gòu)只著眼于大處 函數(shù) 類 詳細 設(shè)計 框 架 架構(gòu) 設(shè)計 模塊 語句 算法 代碼 粒度 函數(shù)庫 類庫 庫 粒度 設(shè)計 粒度 應(yīng)用 許多人常將架構(gòu)與設(shè)計模式和框架混為一談,這是錯的 主要 主要 架構(gòu)性框架 架構(gòu)粒度 = f(項目, 階段, 層) 設(shè)計師角色 【架構(gòu)師】 關(guān)注大格局的設(shè)計 需求 【系統(tǒng)設(shè)計師】 關(guān)注小的局部設(shè) 計需求 【算法工程師】 關(guān)注具體問題的代 碼

2、解決方式,效率 為主 詳細 設(shè)計 架構(gòu) 設(shè)計 算法 什么是大格局的需求? 運營階段 可用性 運營階段 安全性 運營階段 高性能 未來變化 伸縮性 未來變化 擴展性 長期運營 降低成本 開發(fā)階段 開發(fā)測試 運營階段 可用性 運營階段 安全性 運營階段 高性能 未來變化 伸縮性 未來變化 擴展性 長期運營 降低成本 開發(fā)階段 開發(fā)測試 相比于企業(yè)級系統(tǒng),互聯(lián)網(wǎng)系統(tǒng)的差異 并發(fā)量大 流量大 數(shù)據(jù)量大 運營階段 可用性 運營階段 安全性 運營階段 高性能 未來變化 伸縮性 未來變化 擴展性 長期運營 降低成本 開發(fā)階段 開發(fā)測試 相比于企業(yè)級系統(tǒng),互聯(lián)網(wǎng)系統(tǒng)的差異 暴險危機高 運營階段 可用性 運營階

3、段 安全性 運營階段 高性能 未來變化 伸縮性 未來變化 擴展性 長期運營 降低成本 開發(fā)階段 開發(fā)測試 相比于企業(yè)級系統(tǒng),互聯(lián)網(wǎng)系統(tǒng)的差異 地理分布廣 網(wǎng)絡(luò)條件差異大 運營階段 可用性 運營階段 安全性 運營階段 高性能 未來變化 伸縮性 未來變化 擴展性 長期運營 降低成本 開發(fā)階段 開發(fā)測試 相比于企業(yè)級系統(tǒng),互聯(lián)網(wǎng)系統(tǒng)的差異 需求變化快 迭代式開發(fā) 運營階段 可用性 運營階段 安全性 運營階段 高性能 未來變化 伸縮性 未來變化 擴展性 長期運營 降低成本 開發(fā)階段 開發(fā)測試 一個軟件系統(tǒng)怎么可能如此完美? 答案是:整體的目標(biāo)與局部的目標(biāo)分開 【問題】要如何規(guī)劃設(shè)計模塊, 并組織這些模

4、塊,使其成為好 的架構(gòu),滿足大格局的目標(biāo)? 【答案】第一步是切割出足夠細 粒度的模塊,用正確的方法連結(jié) 起來。 架構(gòu)的 4D 座標(biāo)系統(tǒng) 業(yè)務(wù)維度(Y1.Yn):每個業(yè)務(wù)系統(tǒng) 前后端維度(X1.X7):界面(紅)、應(yīng) 用(橙)、框架(黃)、服務(wù)(綠)、 核心(藍)、代理(靛)、數(shù)據(jù)(紫) 系統(tǒng)維度(Z1.Zn):軟件、容器、運行 時、操作系統(tǒng)、虛擬機、到硬件。跟行 業(yè)無關(guān) 架構(gòu)的四維座標(biāo)系統(tǒng) 時間維度(T1.Tn):初始架構(gòu)到成熟架 構(gòu) Y X Z T X6 代理 X5 核心 X4 服務(wù) X1 界面 X7 數(shù)據(jù) X3 框架 用戶外部外部 業(yè)務(wù)領(lǐng)域 七 層 架 構(gòu) X2 應(yīng)用 X 座標(biāo) 注意:每一

5、層內(nèi)由多個模塊構(gòu)成,層只是一種邏輯概念, 層在架構(gòu)中不具備實體 黃色箭頭是跨系統(tǒng)的調(diào)用,白箭頭是系統(tǒng)內(nèi)調(diào)用 有狀態(tài)無狀態(tài) 實用伸縮、高性能、可用、安全 API SPI 防攻擊、伸縮 交互 有狀態(tài) 資源 有狀態(tài) 12345 有狀態(tài) X6 代理 X5 核心 X4 服務(wù) X1 界面 X7 數(shù)據(jù) X3 框架 用戶外部外部 業(yè)務(wù)領(lǐng)域 七 層 架 構(gòu) X2 應(yīng)用 X 座標(biāo) 有狀態(tài)無狀態(tài) 實用伸縮、高性能、可用、安全 API SPI 防攻擊、伸縮 交互 有狀態(tài) 資源 有狀態(tài) 12345 有狀態(tài) Y 座標(biāo) 界 面 框 架 應(yīng) 用 電商系統(tǒng) 代 理 核 心 服 務(wù) 數(shù) 據(jù) 商品系統(tǒng) 代 理 核 心 服 務(wù) 數(shù)

6、據(jù) 訂單系統(tǒng) 代 理 核 心 服 務(wù) 數(shù) 據(jù) 用戶系統(tǒng) 界 面 框 架 應(yīng) 用 商品管理系統(tǒng) 界 面 框 架 應(yīng) 用 訂單管理系統(tǒng) 界 面 框 架 應(yīng) 用 用戶管理系統(tǒng) 前端系統(tǒng) 后端系統(tǒng) Z 座標(biāo) 邏輯層 通用層 網(wǎng)絡(luò)與數(shù)據(jù)層 緩存模塊 數(shù)據(jù)訪問模塊 訪問權(quán)限模塊 Session模塊 參數(shù)配置模塊 負(fù)載均衡模塊 消息隊列模塊 日志模塊 制作縮圖加密算法模塊 搜索模塊 傳統(tǒng)架構(gòu)關(guān)心重點 互連網(wǎng)架構(gòu)關(guān)心重點 傳統(tǒng)架構(gòu)關(guān)心重點 互聯(lián)網(wǎng)架構(gòu)關(guān)心重點 分布式鎖 分布式文件 壓縮算法 通訊協(xié)議與格式 數(shù)據(jù)庫 代理 核心 服務(wù) 應(yīng)用 界面 用戶 接出 應(yīng) 用 優(yōu) 化 資 源 優(yōu) 化 接入 平 臺 優(yōu) 化

7、前 端 優(yōu) 化 數(shù)據(jù) 框架 負(fù)載均衡服務(wù)器 軟負(fù)載均衡 靜態(tài)資源服務(wù)器 Session服務(wù)器集群MQ 集群MQ CDN反向代理服務(wù)器 緩存服務(wù)器 云 讀寫分離 同步備份異步備份 冷備份 緩存服務(wù)器 云 配置服務(wù)器 配置服務(wù)器 Z3 的考量 災(zāi)備中心 代 理 核 心 服 務(wù) 界 面 數(shù) 據(jù) 框 架 應(yīng) 用 代 理 核 心 服 務(wù) 數(shù) 據(jù) XY 座標(biāo) 代 理 核 心 服 務(wù) 數(shù) 據(jù) 不同后臺系統(tǒng)的調(diào)用, 視為外部間接調(diào)用 但對于公共系統(tǒng),可以 直接調(diào)用 公共系統(tǒng)是指大家都可能需要的系統(tǒng),包括短信發(fā)送、加密服務(wù)。公共系統(tǒng)不可以依 賴任何非公共系統(tǒng)。公共系統(tǒng)接口簡單不易改變。公共系統(tǒng)沒有獨立成為一家公

8、司運 作的可能。各個后臺系統(tǒng)獨立成為公司運營時,公共系統(tǒng)可以送給他們。 業(yè)務(wù)系統(tǒng)不允許在沒有代理隔離的情況下調(diào)用其他系統(tǒng),是因為其他系統(tǒng)以后都可能 會獨立運作。 七層架構(gòu)詳解 代理核心服務(wù)界面數(shù)據(jù)框架 用戶外部外部 應(yīng)用 業(yè)務(wù)資源領(lǐng)域交互 跟外部有接觸的,只有三個地方。 三個外部系統(tǒng),包含一個人,一個接入系統(tǒng),一個接出系統(tǒng) 箭頭指的是接口依賴,不是信息流向 黃色箭頭是回調(diào)(Call-Back)。想一想,為什么這三層要允 許回調(diào)? 黃色箭頭部分也可改用 Message Queue 的低耦合設(shè)計方式 代理核心服務(wù)界面數(shù)據(jù)框架 用戶外部外部 應(yīng)用 業(yè)務(wù)資源領(lǐng)域交互 核心層反映出領(lǐng)域模型 核心層的接口

9、基本就是對此領(lǐng)域模型進行操作 為何要建立領(lǐng)域模型? 1. 幫助接口設(shè)計 2. 幫助數(shù)據(jù)存儲設(shè)計,梳理出更具有彈性的存儲方式 代理核心服務(wù)界面數(shù)據(jù)框架 用戶外部外部 應(yīng)用 業(yè)務(wù)資源領(lǐng)域交互 服務(wù)層針對領(lǐng)域?qū)ο筮M行操作,并提供彈性的調(diào)用接口 服務(wù)層接口通常數(shù)目不多,但每個接口通常參數(shù)相當(dāng)多 服務(wù)層沒有狀態(tài),也不做緩存 實現(xiàn) API。如果公開,就是開放接口 調(diào)用服務(wù)層的接口,通常需要授權(quán) 代理核心服務(wù)界面數(shù)據(jù)框架 用戶外部外部 應(yīng)用 業(yè)務(wù)資源領(lǐng)域交互 驅(qū)動作用: 數(shù)據(jù)代理:代表外部系統(tǒng)或數(shù)據(jù)庫 Z3 緩存:為了效率或提高可用性(當(dāng)外部系統(tǒng)掉線) Z3 數(shù)據(jù)模塊,支持讀寫分離 轉(zhuǎn)接或轉(zhuǎn)發(fā) 轉(zhuǎn)接到外部系

10、統(tǒng) 轉(zhuǎn)發(fā)到日志系統(tǒng),數(shù)據(jù)備份系統(tǒng)(通過事件鉤子) 熱備系統(tǒng)接入 SPI 作用: 隔離:避免依賴特定的外部系統(tǒng)或數(shù)據(jù)庫 代理核心服務(wù)界面數(shù)據(jù)框架 用戶外部外部 應(yīng)用 業(yè)務(wù)資源領(lǐng)域交互 數(shù)據(jù)是公司最重要的資產(chǎn),數(shù)據(jù)層負(fù)責(zé)記錄系統(tǒng)運作后的最 終結(jié)果 根據(jù)數(shù)據(jù)的特性,數(shù)據(jù)庫可以是: 關(guān)系式數(shù)據(jù)庫 列數(shù)據(jù)庫 Associative DB Key-Value 文件數(shù)據(jù)庫 日志 代理核心服務(wù)界面數(shù)據(jù)框架 用戶外部外部 應(yīng)用 業(yè)務(wù)資源領(lǐng)域交互 根據(jù)市場需求,開發(fā)各種應(yīng)用,并以接口的方式展現(xiàn)。 如果是 Web 應(yīng)用,則這里的 Z3 包含 Web 服務(wù)器層 代理核心服務(wù)界面數(shù)據(jù)框架 用戶外部外部 應(yīng)用 業(yè)務(wù)資源領(lǐng)

11、域交互 將常用的應(yīng)用流程設(shè)計成框架,后續(xù)開發(fā)同類型應(yīng)用時, 只要通過參數(shù)或者 DSL,就可以輕易訂制應(yīng)用,減少開發(fā)應(yīng) 用的成本 框架也可以用接口的方式開放讓外部調(diào)用 Z3 緩存與 Session 代理核心服務(wù)界面數(shù)據(jù)框架 用戶外部外部 應(yīng)用 業(yè)務(wù)資源領(lǐng)域交互 界面更像是用戶的延伸,而非應(yīng)用的延伸。界面可被視為用 戶代理(User Agent) 根據(jù)用戶喜好、語言、平臺(手機、電腦、平板)進行開 發(fā)各種用戶界面的開發(fā)。 一個應(yīng)用可以有多個界面 如果是 Web 應(yīng)用,則這里的 Z3 包含 Web 瀏覽器 7+2 層 架 構(gòu) 之 系 統(tǒng) 素 質(zhì) 可用性(Usability) 可用性(Usabilit

12、y),擴展性, 安全(防攻 擊) 可用性(Availability),安全 高效率 透明性 安全性,持久性 數(shù)據(jù) 代理 核心 服務(wù) 框架 應(yīng)用 界面 通用層 網(wǎng)絡(luò)層 通用性 穩(wěn)定,可用(Availability),伸縮,效率 7+2 層 架 構(gòu) 之 人 員 素 質(zhì) 了解用戶,且具有審美觀 了解市場與用戶,具有產(chǎn)品設(shè)計能力 了解市場與用戶,且擅長歸納總結(jié) 了解領(lǐng)域和公司的戰(zhàn)略,有接口設(shè)計能力 有比較強的計算機知識與算法能力 了解領(lǐng)域與合作夥伴 了解領(lǐng)域與數(shù)據(jù)庫 數(shù)據(jù) 代理 核心 服務(wù) 框架 應(yīng)用 界面 通用層 網(wǎng)絡(luò)層 了解語言、程序框架、各種開源項目 了解操作系統(tǒng)、網(wǎng)絡(luò)、云計算 7+2 層 架

13、構(gòu) 之 技 術(shù) 數(shù)據(jù) 代理 核心 服務(wù) 框架 應(yīng)用 界面 通用層 網(wǎng)絡(luò)層 HTML/CSS/JavaScript/HTML/Android/iOS/PHP PHP/Python/Ruby/Java Java/C Java/C NoSQL/MySQL Security/MemCached/Redis/MySQL Spring/Load Balance/F5/Cloud 7+2 層 架 構(gòu) 之 代 碼 迭 代 進 度 數(shù)據(jù) 代理 核心 服務(wù) 框架 應(yīng)用 界面 通用層 網(wǎng)絡(luò)層 每周 每月 每季 每年 不一定 不一定 每季 每半年 架構(gòu)流程 層 架構(gòu)推導(dǎo)過程 接口 模塊 對象 參數(shù) 數(shù)據(jù) 對內(nèi)高內(nèi)聚力

14、 對外低耦合 泛用化泛用化 詳細設(shè)計詳細設(shè)計詳細設(shè)計 業(yè)務(wù)設(shè)計 X2 X4 模塊設(shè)計 X1.X6 / Z2 數(shù)據(jù)存儲設(shè)計 X1 X3 X6 X7 網(wǎng)絡(luò)布署規(guī)劃 X1.X7 / Z3 人員機器規(guī)劃 X / Y / Z 領(lǐng)域建模 X4.X6 / Y 交互設(shè)計 X1 X2 X6X5X4X1X7X3 用戶外部外部 X2 系統(tǒng)重構(gòu) T1.Tn 業(yè)務(wù)資源領(lǐng)域交互 業(yè)務(wù)拆分 X2 X4 / Y1.Yn 角色名稱系統(tǒng)名稱用例描述人? 根據(jù)業(yè)務(wù)拆分系統(tǒng) X6X5X4X1X7X3 用戶外部外部 X2 業(yè)務(wù)資源領(lǐng)域交互 業(yè)務(wù)設(shè)計(找出接口與參數(shù)) 層層層 研究 數(shù)據(jù)字典 研究 外部接口 找出 領(lǐng)域?qū)ο?設(shè)計 領(lǐng)域模

15、型 設(shè)計 SPI數(shù)據(jù)庫設(shè)計 數(shù)據(jù) 遷移計劃 代理層 代碼設(shè)計 領(lǐng)域訪談 設(shè)計 API 研 究 設(shè) 計 實 施 領(lǐng)域?qū)?代碼設(shè)計 服務(wù)層 代碼設(shè)計 對 X4 的 業(yè)務(wù)需求 3. 訪問頻率 4. 讀寫比 1. 重要性 2. 保密性 (密碼) 8. 數(shù)據(jù)筆數(shù) 9. 數(shù)據(jù)體積 (圖) 5. 一致性 6. 熱點現(xiàn)象 (新聞,商品) 10. 索引方式 7. 地域現(xiàn)象 (用戶登錄) 紅色對于領(lǐng)域模型的設(shè)計有幫助 醫(yī)院科室醫(yī)師班表 病癥預(yù)約地點 用戶 家屬 包含 初步版本的掛號領(lǐng)域模型,供大家參考。 可以在此模型之下進行 API/SPI 的設(shè)計 ID名稱 ID 座標(biāo) 名稱 目的 負(fù)責(zé)人 依賴 接 口 與 參

16、數(shù) 詳編模塊定義 數(shù)據(jù)特性 分析 數(shù)據(jù)庫 選型 備份策略 緩存策略 十大指標(biāo)數(shù)據(jù)庫特徵表 云計算與大數(shù)據(jù) Z 座標(biāo)和云平臺的關(guān)系 邏輯層 通用層 邏輯層邏輯層 網(wǎng)絡(luò)層 IaaS PaaS XZ 座標(biāo)和云平臺的關(guān)系 代理核心服務(wù)數(shù)據(jù) 用戶外部外部 業(yè)務(wù)資源領(lǐng)域交互 核心云 核心大數(shù)據(jù) 應(yīng)用云 應(yīng)用大數(shù)據(jù) 界面框架應(yīng)用 Web: SaaS Open API 所有業(yè)務(wù)系統(tǒng)的服務(wù)層以下都要收歸集團統(tǒng)一管理。優(yōu)點: 只有內(nèi)部(服務(wù)以下就是內(nèi)部)可以依賴 數(shù)據(jù)方便管理 方便管理與外部系統(tǒng)的關(guān)系 可以逐漸形成統(tǒng)一平臺 數(shù)據(jù) 代理 核心 服務(wù) 框架 應(yīng)用 界面 多數(shù)人提到大數(shù)據(jù) 時,都是指來自這 里(數(shù)據(jù)庫)

17、的數(shù) 據(jù)。而系統(tǒng)運行過 程中的許多有價值 的數(shù)據(jù),都被丟棄 忽略了。 比方說:當(dāng)多數(shù)用 戶到了某頁面后, 就不往下進行,可 能頁面設(shè)計有問題, 只要改善頁面用戶 體驗,業(yè)績就會大 幅提升。但只通過 數(shù)據(jù)庫,無法分析 出這點 數(shù)據(jù) 代理 核心 服務(wù) 框架 應(yīng)用 界面 七 層 架 構(gòu) 與 五 個 事 件 鉤 子 事件 鉤子 事件 鉤子 事件 鉤子 事件 鉤子 事件 鉤子 業(yè)務(wù)系統(tǒng)的層與層之間,都可設(shè) 置事件鉤子,避免系統(tǒng)改造。 事件鉤子可以將事件原地處理, 也可將事件送到其他服務(wù)器處理 事件鉤子同時具備日志的效果, 關(guān)鍵事件可以送到統(tǒng)一日志中心 注意:代理層的事件鉤子是 設(shè)置在代理層出口,而不是 入口 外部 外部 通過 Z3 層的配置,可以直接得到事件 事 件 信 息 流 向 與 數(shù) 據(jù) 分 析 系 統(tǒng) 商業(yè)智能系統(tǒng) 業(yè)務(wù)活動監(jiān)控系統(tǒng) 用戶體驗分析系統(tǒng) 網(wǎng)絡(luò)攻擊分析系統(tǒng) 商業(yè)風(fēng)險控制系統(tǒng) 數(shù)據(jù)備份系統(tǒng) 事件 鉤子 事件 鉤子 事件 鉤子 事件 鉤子 事件 鉤子 數(shù)據(jù) 大 數(shù) 據(jù) 分 析 平臺化戰(zhàn)略 產(chǎn)品創(chuàng)新需要技術(shù)支撐 技術(shù) 創(chuàng)新產(chǎn)品 企業(yè)競爭力 促 進 支 撐 唯有持續(xù)推出創(chuàng)新的產(chǎn)品,

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論