為滿足性能、擴展性、業務快速交付等方面的要求,新.net core雲開發框架改造的主要思想是:高內聚、低耦合,即進一步實現縱向和橫向分層,提高可伸縮性和可擴展性,實現彈性部署: 採用領域驅動設計進行架構橫向分層,同時業務功能縱向分割 在代碼和資料庫設計上充分考慮雲架構要素,提高可伸縮性、可擴展性、高 ...
為滿足性能、擴展性、業務快速交付等方面的要求,新.net core雲開發框架改造的主要思想是:高內聚、低耦合,即進一步實現縱向和橫向分層,提高可伸縮性和可擴展性,實現彈性部署:
- 採用領域驅動設計進行架構橫向分層,同時業務功能縱向分割
- 在代碼和資料庫設計上充分考慮雲架構要素,提高可伸縮性、可擴展性、高性能性和安全性
- 採用諸如分散式緩存、分散式存儲、並行資料庫、消息隊列、ESB等多種可伸縮技術實現松耦合
採用上述設計思路後的新架構搭建的綜合業務管理系統如下圖。其中HL、HB等是外部系統,通過ESB與綜合業務管理系統交互。
一、高內聚、低耦合
就是系統的模塊內各個元素彼此結合的緊密程度高,但是模塊間儘可能獨立存在,這是軟體質量的標準和設計的終極目標之一。高內聚、低耦合的系統更容易擴展,更容易復用,也是雲計算平臺分散式、可擴展部署的必要條件。
首先,在縱向架構上遵循分層的B/S架構標準,將整個系統劃分為表現層、業務邏輯層、數據訪問層。我採用領域驅動設計方式,在三層基礎上又進行了細分,分為五層,分別為數據持久層、基礎設施層、業務領域層、應用層和展示層,其核心是業務領域層,所有業務邏輯應該在領域層實現。
其次,在橫向上進行業務分割,就是將系統功能分割成一個個業務模塊。根據業務需求的獨立性將門戶管理、即席查詢、指標報表、後臺任務、工作流表單等業務模塊進行分割,並分別部署到不同的計算資源中,模塊間通過MQ或者SOA介面相互調用,從而提高系統的併發能力和擴展能力。
*個人認為這是軟體項目的最終質量目標,所以重點提一下
二、領域驅動設計架構
領域驅動設計架構分為五層,分別為數據持久層、基礎設施層、業務領域層、應用層和展示層。
其核心是業務領域層,所有業務邏輯應該在領域層實現。
三、資料庫設計
目前資料庫通常使用幾種方式進行優化:
-
分庫分表
- 按照業務將大資料庫拆分成更小的資料庫
- 特殊情況下某些訪問量大、數據量大的數據表按照一定邏輯拆分到不同資料庫伺服器中(某些雲已提供分散式資料庫,不需要程式實現)
-
讀寫分離
- 一個可寫的資料庫,其他只讀資料庫是可寫資料庫的同步鏡像
- 形成當前操作數據和歷史數據兩個部分
四、分散式技術
分散式技術的應用可以促進系統的可伸縮性,更利於雲端部署
- 靜態資源網站
- 雲存儲
- 分散式緩存
- 分散式消息隊列、ESB等交互工具
- 分散式資料庫
*靜態資源網站更像是一個方式,而不是分散式技術。