架構可擴展架構如何設計?

1 架構設計複雜度模型:

【業務複雜度】:業務過的複雜度,主要體現在難以理解、難以擴展,例如業務數量多 (微信)、業務流程長 (支付)、業務之間關係複雜。

【質量複雜度】: 高可用、高性能、成本、安全等質量屬性的要求。

【業務複雜度和質量複雜度是正交的】

  1. 可擴展的定義:

  1. 可擴展的複雜度模型:

可擴展可以拆分爲可擴展和可伸縮,其中的可擴展表示系統的適應能力,包含可理解和可複用兩部分;可伸縮表示可以通過增加資源來提升系統性能。

可擴展可以分爲:架構可擴展、應用可擴展、代碼可擴展三個維度。

架構可擴展,表示爲可理解,然後通過拆分形態和拆分力度,將整個系統進行分層和微服務拆分。

應用可擴展和代碼可擴展,可以分爲可理解和可複用,可理解也是使用拆分形態和拆分力度進行拆分;可複用則使用分裝,預測變化和封裝變化。

  1. 拆分複雜度模型:

對於拆分來說,主要有拆分形態和拆分力度,拆分形態可以自頂向下進行拆分,首先拆分服務,然後拆分模塊,再拆分插件和包;但是不能拆的太粗也不能拆的太細,那麼拆分粒度就是用來衡量和約束拆分形態的,主要分爲內部複雜度和外部複雜度。

  1. 拆分粒度:兩個複雜度:

  1. 拆分的粒度:平衡的藝術

  1. 封裝的複雜度模型:

  1. 預測的藝術:

3 次原則的含義是,當某段代碼出現多次類似的問題時,說明這段代碼可能存在問題,可能不符合良好的編程實踐或設計原則。如果同一段代碼在不同的地方出現了三次類似的問題,那麼就應該考慮對這段代碼進行重構,以消除重複、提高代碼質量和可維護性。

  1. 封裝的技巧: 封裝是封裝變化,在封裝時要設計封裝模型,例如使用規則引擎、微內核、抽象層、設計模式等

規則引擎開源的有:美團 MazeGO 規則引擎,配置中心用於提供規則配置視圖,規則管理模塊用於獲取規則和解析規則,運行時模塊用於發佈和調度任務執行,平臺嵌入層負責實際執行規則邏輯。

OSGI 微內核:OSGI 框架從概念上可以分爲三層:模塊層、生命週期層、服務層;模塊層主要涉及包及共享代碼,控制單元爲 Bundle;生命週期層主要涉及 Bundle 的運行時生命週期管理;服務層主要設計模塊之間的交互和通信。

Linux VFS 抽象層:Linux VFS 對應用層提供一個標準的文件操作接口,對文件系統也提供一個標準的接口,以便於其他操作系統的文件系統可以很好的移植到 Linux 上

設計模式:

上圖所示:裝飾者模式是一種設計模式,它允許動態地爲對象添加新的行爲,同時又不改變其接口或實現。這種模式通過將對象包裝在一系列裝飾者對象中,形成一個對象鏈,從而可以在運行時動態地添加、刪除或修改對象的行爲,從而擴展其功能。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/GNFr-uGuHnhyHMHQ7Yr-qA