軟體體系 匯流排(bus)結構 牢騷

2021-06-28 06:55:31 字數 836 閱讀 2579

眾所周知,計算機因為確立了匯流排這種最基本的結構,大大促進了計算機的發展。匯流排結構使計算機能夠方便的元件化,匯流排上跑資料,乙個乙個的裝置接入匯流排,從匯流排上獲取它所需要的資料,通過匯流排把它想傳送出去的資料傳送到合適的單元,就好比人身體上得血管神經網路,大大小小的器官接入他們從血管裡獲取養分,並排除廢物,從而組成了人體這個複雜的物體,這是化繁為簡,造物主經典之作。我這兒要說的是軟體設計的匯流排結構,軟體設計時設計一套匯流排用來跑資料,各個模組接入這個匯流排,這個是很多中介軟體標榜的乙個特性。

還是說回來,事情的起因是這樣,最近公司專案經過幾年的發展,日均併發人數達到了300w,並且還會快速增長;越來越多得新特新加入進去,系統也越來越複雜,模組已經達到了30多個,模組間的關係也越來越像蜘蛛網;通過分析發覺是使用基礎框架的匯流排結構惹的禍,目前的匯流排實際上是建立一堆共享記憶體,即在程式執行前就確立了誰要跟誰通訊並建立好以兩邊bus id為標示的共享記憶體。這是好幾年前的設計思想,設計思路,當程式不複雜時,這種思路可以很好的解決通訊問題,可以提高模組的開發效率,但是隨著系統越來越複雜,這種對應關係也越來越難維護。後續修改思路:設定乙個命名中心,當服務啟動時註冊自己的資訊到這個命名中心,當需要訪問服務時,通過帶上名稱訪問該命名中心獲取真實的標示,從而建立通訊。這個命名中心可以自己開發或者使用開源的zookeeper。

那麼如果我們要設計乙個可靠地bus該怎麼來做呢,bus中除封裝訊息傳送和接受的功能外,還需封裝命名中心查詢以及模組狀態的功能,方便動態擴充套件;a模組要介入,a調bus的乙個介面,向bus註冊自己的資訊;當b要給a發訊息時,調bus的乙個介面,說要發給誰誰(可以是名字也可是具體的唯一標示id),當目標標示為乙個名稱時,bus向自己的命名中心查詢真實的id,而建立通訊,bus要避免把具體的唯一標示作為通訊的標示暴露給上層。

軟體體系結構 軟體體系結構概論

開學到現在我已經上了三節軟體體系結構的課程,現在我想把自己學到的整理歸納一下。此篇隨筆對應於教材軟體體系結構概論一章。首先談一談我剛接觸這門課程是的感受。那就是 我靠 軟體也會有體系結構?以前只學過資料結構 演算法 基本的程式語言,覺得程式設計無非就是使用者給我需求,我便按照需求來程式設計序就好,從...

軟體體系結構

軟體體系結構是具有一定形式的結構化元素,即構件的集合,包括處理構件 資料構建 連線構建。處理構建 負責對資料進行加工 資料構建 是被加工的資訊 連線構建 把體系結構的不同部分組合連線起來 1 作為通訊的手段 2 代表了早期的設計決策結果 3 高層次的設計復用手段 1 軟體體系結構是風險承擔者 又稱涉...

軟體體系結構 軟體體系結構複雜性

複雜性具有不同的種類和形態,一種簡明的度量是類之間通訊路徑的數量,通訊路徑是類之間存在的持久或暫時連線。複雜性存在四種維度的解釋 從適應能力的角度,認知複雜性度量可以增強可理解性質量,結構複雜性可以增強可維護性和可伸縮性質量。這兩種度量是有關係的,對於低結構複雜性,認知複雜性的較小值雖然是必要不充分...