什麼是耦合?
子產品間的依賴性就是耦合,兩個功能函數之間的依賴程度
如五個人共同開發一個子產品,應該盡量松耦合,就是聯系越小越好,這樣一個子產品變動,另一個子產品就不會變動
松耦合的方法,一般是底層函數,功能盡量單一,盡量避免修改底層函數,功能相近的函數,可以設計兩個以上,不要為了減少代碼量,把一個函數的功能設計太多
松耦合系統通常是基于消息的系統,此時用戶端和遠端服務并不知道對方是如何實作的。用戶端和服務之間的通訊由消息的架構支配,隻要消息符合協商的架構,則用戶端或服務的實作就可以根據需要進行更改,而不必擔心會破壞對方
松耦合通訊機制提供了緊耦合機制所沒有的許多優點,并且他們有助于降低用戶端和遠端服務之間的依賴性。但是,緊耦合性通常可以提供性能的好處,便于在用戶端和服務之間進行更為緊密的內建(這在存在安全性和事務處理要求時,可能是必須的)
緊耦合架構本質是一個client/server模型,客戶機發起請求給伺服器,伺服器收到,根據請求做出回答,然後回報給客戶機。這種架構最典型的應用就是我們
每天都用到的web服務。優點嘛,就是簡單。架構簡單、設計簡單、開發周期短、能夠快速投入 部署和應用。在Laxcus叢集的早期運作中,這些特點都得到有力的驗證。
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsISPrdEZwZ1Rh5WNXp1bwNjW1ZUba9VZwlHdsATOfd3bkFGazxCMx8VesATMfhHLlN3XnxCMwEzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5yY2Y2MhJ2Y3IWNiNzY3QmNlBzNhVWYzgjM0UzMmNmMj9CX0EzLchDMxIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjL2M3Lc9CX6MHc0RHaiojIsJye.png)
緊耦合架構
但是到了後期,随着laxcus叢集規模的不斷擴大,通路量的不斷增加,尤其是資料計算量、計算時間成倍數的增長後,緊耦合架構漸漸不堪重負,缺點開始不斷暴露出來
1、無法支援大規模的計算業務,因為大資料業務對計算機資源占比普遍很大,導緻多任務并行能力有限,舉個例子,我們曾在一台Pentium IV 2.G+2G的機器上測試一項小規模的資料處理業務,當并行任務量達到100多個的時候,計算機已經發生超載現象
2、計算機載荷無法控制,換句話說,就是計算機不能控制超載現象,而超載對硬體傷害非常大,這會嚴重降低計算機穩定運作能力和使用壽命
3、任務執行中管理難度大,任務在執行過程中不受管控
4、對網絡資源消耗大,同步操作在資料發送和資料傳回之間,有很大一段是空閑的,這種空閑占用是對網絡資源的極大浪費
5、安全控制力度差,因為伺服器直接暴露給客戶機,容易引發網絡攻擊行為
6、程式代碼之間關聯度過高,不利于子產品化處理
7、以上現象最終導緻系統穩定性變差
這些問題出現後,我們開始考慮修改系統設計,經過多番考量、比較、權衡之後,我們決定改用松耦合架構重新規劃系統設計。新架構是在原來client/server模型之上的改進,即在client/server模型之間加入一個代理,把CS模型變成CAS模型,在新的架構下,客戶機的角色不變,代理伺服器承擔起與客戶機的通信,和對客戶機的識别判斷工作,伺服器位于代理伺服器後面,對客戶機來說不可見,它隻負責資料處理工作,另外我們也把CS模型的同步操作改為CAS的代理處理
在設計新架構的同時,我們還發現,如果要适應松耦合架構,原來在緊耦合架構下運作的程式代碼,因為現在的工作方式發生了變化,它們幾乎都要重寫,這是一個龐大的工程,需要消耗大量的人力,時間去修改和調試。是以我們在松耦合架構之上,結合代理伺服器,又設計了一套invoke/produce機制,這是另一種代理方案,是針對資料處理進行抽象化處理。原來的資料處理和業務邏輯套用這套機制後,程式代碼幾乎不用修改,轉移到CAS模型上運作就可以了
松耦合架構
新架構設計和代碼修改完成後,我們在原來的叢集上,和緊耦合架構做了各種對比測試。結果表現是出其的好,不僅解決了緊耦合架構上存在的所有問題,而且其中很多技術名額還超出了我們的預估,主要表現以下一些方面
1、多任務并行處理能力獲得極大提升。同樣是上述那個資料處理,緊耦合架構隻能支援最大約100多個并行,而轉到松耦合架構上,達到了8700多個,這還隻是在Pentium IV 2.0晶片上的表現,放到Core 2平台,并行處理任務很輕松地超過10000個
2、實作負載自适應機制(根據當時運作環境,松耦合架構配置設定并行工作任務,避免超載現象)
3、實作了運作任務的随機控制(松耦合架構對運作中的工作任務進行随機調整和控制,進一步避免了持續超載現象)
4、基本杜絕了網絡攻擊行為,由于代理伺服器的隔絕和篩查作用, 同時結合其它安全管理手段,外部攻擊在代理伺服器處就被識别和過濾掉了,這樣就保護了後面的伺服器不受影響
5、Invoke/Produce機制改善了程式結構的子產品化,有利于實作複雜的資料業務處理
6、異步操作減少了網絡資源消耗和操作關聯
7、綜合以上措施,他們共同增強了系統穩定性
最後用一張表對兩種架構做個對比,作為兩種架構性能特點的總結
工作方式
同步
異步
程式關聯依賴
強
弱
業務邏輯關系
集中控制
分散控制
設計難度
容易
比較複雜
響應能力
快
和并行工作量成反比
時效表現
實時
無要求
業務适用範圍
簡單計算
複雜計算
安全
應用領域
小規模并行處理環境
大規模、超大規模并行處理環境
系統穩定性