業務功能性
模塊,組件,類,三種層次的定義
系統設計的關鍵所在
- 可擴展
- 解耦
- 高併發
- 高性能
- 橫向擴容
- 高可用
其中1-2爲了解決複雜業務,3-6爲了解決業務增長問題
耦合
上圖就是一種耦合,模塊A的代碼內方法直接去訪問模塊B中的一個方法。關於這種調用我們也可以稱爲具象調用。
引入一個概念:越抽象越趨於穩定,越具象越趨於紊亂。
解耦實現
1.面向接口編程
接口是常用的解耦方式也可以稱爲抽象調用,只要接口穩定,實現代碼隨意改動不影響調方代碼。
但是這種方式有一個致命改動就是接口變動。如上圖IA接口變動所有調用IA的地方均需改動。當然可以利用適配器設計模式來加強接口穩定性。
缺陷:接口穩定性難以保證,接口一旦變動,相關業務邏輯代碼均需要修改。
2.消息編程
假設A模塊要調用B模塊的功能,但是又不去調B的任何函數,甚至模塊可以直接摘掉,也不影響系統運行,僅僅是缺少了這部分功能而已。
就像火車一樣,摘下來一節車廂裝上去一節車廂,火車都可以正常運行。
如上圖所示,A要去調B的功能具體實現步驟如下,此過程僅僅說明了單次調用,沒有進行返回參數的回寫。(原理相同,在進行一次領域模型寫入,與消息傳遞即可)
- A模塊先將傳入參數保存到領域模型內
- 將調用消息上載到消息中心
- 消息中心將消息調用推到B模塊
- B模塊去獲取領域模型,至此完成參數傳遞及調用