软体架构模式3. ?大綱
? 介紹
? 分層架構 (Layered Architecture)
? 事件驅動架構 (Event-Driven Architecture)
? 微核?心架構 (Microkernel Architecture)
? 微服務架構 (Microservices Architecture)
? 基於空間的架構 (Space-Based Architecture)
9. 分層架構
? 也叫做多層架構模式 (N-tier architecture pattern)
? 多數 Java EE 的?非官?方標準
? 架構師、設計師、開發?人員最熟悉的架構
? 和傳統 IT 通訊、組織架構最接近 (Conway’s law)
11. 封閉 vs. 開放
? 封閉層 (Closed Layer) 代表請求必須
?一層?一層的傳遞,達到隔離的效果
? 限制修改的影響範圍只有上下層,降
低組件之間的耦合
? 重構影響低
12. 封閉 vs. 開放
? 開放層 (Open Layer) 代表請求可以
直接穿越它,存取其下的架構層
? 通常?用於提供共?用服務/資源
? 定義?一層的開放或封閉,確定了請求
流動的?方式
? 所有開發?人員都要理解這些限制
15. 模式分析
評價 原因
整體靈活性 低 修改費時、較為笨重、可能出現?高耦合
是否易於佈署 低 ?小改動可能影響到整體,需要有計劃進?行
可測試性 ?高 可分別測試或?用 mock 代替
性能 低 ?一次業務請求需要穿越?大量的架構層
伸縮性 低 架構層間的緊密耦合、通常規模較?大
是否容易開發 是 熟悉度?高、和組織分層相近
23. 模式分析
評價 原因
整體靈活性 ?高 事件處理器?高度解耦合
是否易於佈署 ?高 事件處理器?高度解耦合
可測試性 低
雖然單元測試簡單,但整合測試困難 ?
(需要整體+異步問題)
性能 ?高 ?高度解耦合+異步處理
伸縮性 ?高 事件處理器?高度解耦合
是否容易開發 否 需考慮異步處理、訂定協定和流程、處理錯誤狀況
25. 微核?心架構
? 從 OS 得名,也稱作插件應?用架構
? 可以透過插件的?方式添加額外的特性到核?心系統
? 具備良好的擴展性和隔離性
? 例如 Eclipse IDE
30. 模式分析
評價 原因
整體靈活性 ?高 插件兼的鬆耦合,可以隔離變化。
是否易於佈署 ?高 依據實作,插件可以?支援熱差拔
可測試性 ?高 各個插件可以分開測試。可使?用 mock
性能 ?高 透過插件調整可以只包含必要的模組
伸縮性 低 實現是基於產品,?非此架構特??長
是否容易開發 否 需要設計和管理規約,版本控制,考慮顆粒度
34. 基於 REST API 拓撲
? 每?一個服務組件皆透過單獨佈署的
Web 服務,以 REST API 的?方式提供
服務。
? 顆粒度?非常的細 (也是名稱由來)
? 許多?大型企業提供此類服務
35. 基於 REST 應?用拓撲
? 透過 Web 或是胖客?戶端來處理請
求,?而?非 API。
? 相較於前者,此實現的服務組件顆粒
度較?大
? 常?見於中?小型企業,或複雜度較低的
應?用
39. 模式分析
評價 原因
整體靈活性 ?高 服務組件?高度解耦合
是否易於佈署 ?高 服務組件?高度解耦合
可測試性 ?高
服務組件可分開測試,且相依度不?高,可以減少對整體進
?行測試的負擔
性能 低 分佈式特性不適合?高性能
伸縮性 ?高 服務組件?高度解耦合
是否容易開發
?高
功能被隔離成不同服務組件,開發範圍?小,且互相不影響