作者總結這些年在支付寶做架構的經驗,把自己摸索成長的內容寫下來,從對架構師的認知到業務能力和架構能力多方面總結了案例經驗,希望可以幫助到大家。 ...
作者總結這些年在支付寶做架構的經驗,把自己摸索成長的內容寫下來,從對架構師的認知到業務能力和架構能力多方面總結了案例經驗,希望可以幫助到大家。
在內網上有太多的架構相關的文章了(比如大名鼎鼎的自頂向下),我之前也寫過應用架構設計的經驗。但是總有種霧裡看花的感覺,好像有很多相關的知識,soa、分散式事務、DDD、複雜系統重構、領域建模、業務架構、等等等,這些複雜的名詞和知識感覺學了一堆仍然不得其法。
所以我準備把我這些年在支付寶做架構,自己摸索成長的內容寫下來,看能否幫助到大家。
成長,是認知的升級
為什麼
是什麼
-
從一些危害講,業務系統處理業務請求,如果使用多線程模型並且使用了sync,非常容易導致請求hang死,並且不利於我們的併發。
-
從線程技術上來說,預設是unbound。這會導致很多的記憶體溢出,並且使用多線程,伺服器重啟會導致業務處於不可知的狀態。
-
從使用原因來說:業務中使用多線程(有別於Tomcat這種容器中間件)是為了提高併發能力,或者是非同步化業務能力。而這兩種都有其他的方案來替代。比如高併發,我們可能會進行一些拆分操作,比如非同步化,會使用消息隊列等。
-
怎麼做呢,比如非同步化,我們用消息隊列。如果是資源共用,那麼儘量做到讀,而不是寫。如果是共用寫,那麼根據業務場景儘量拆分,然後歸攏業務職責。這也是架構設計中聚合的重要性。很多框架比如netty,都有無鎖設計。
![圖片](https://img2023.cnblogs.com/blog/27422/202306/27422-20230616131358093-1297923193.png)
怎麼做
-
2w(分析維度):why what。回答 為什麼 和 是什麼這個問題。
-
3w(屬性維度):when who where
-
1h :how to do 核心本質怎麼做
-
1h :how much 核心成本,也是ROI。決策的核心維度,投入產出比。(這個非常核心,沒有最好的架構,只有最合適的架構)
業務能力
業務背景
業務問題
業務發展判斷(前瞻性)
橫向:會有更多的平臺產品,業務場景出現,但是關聯關係不變。
縱向:會有更多的前後功能延伸出現,但是本質不變(比如spring做了很多的cloud)
架構能力(設計)
![圖片](https://img2023.cnblogs.com/blog/27422/202306/27422-20230616131358016-694699031.png)
方法論
架構定位
交易系統:圍繞一筆商品交易的單據,進行不同狀態的流轉和業務參與者關係的流程組裝與驅動。
支付系統:基於用戶有價資產償付。
商品系統:圍繞商業活動中,對於物的屬性定義與管控。
業務架構
對上:提供下單,支付,確認收貨,評論 等業務階段暴露
核心:交易單據,狀態流程,業務組件串聯
應用架構
![圖片](https://img2023.cnblogs.com/blog/27422/202306/27422-20230616131358130-1207677599.png)
![圖片](https://img2023.cnblogs.com/blog/27422/202306/27422-20230616131358094-1984908189.png)
架構延續
通用技術方案(包含設計)
技術方案部分
-
tcc
-
jta/xa
-
saga
-
最終一致性
-
冪等
典型技術方案
-
ldc
-
分庫分表
-
高併發拆分
-
集群
-
多活&熱備
-
分散式鎖
-
唯一性管控
設計方案部分
-
acl
-
執行模板
-
流程式
-
多策略
-
流程化
-
AOP
-
設計模式
本文來自博客園,作者:古道輕風,轉載請註明原文鏈接:https://www.cnblogs.com/88223100/p/How-to-become-an-architect.html