耦合,松耦合,緊耦合


什么是耦合?

模塊間的依賴性就是耦合,兩個功能函數之間的依賴程度

如五個人共同開發一個模塊,應該盡量松耦合,就是聯系越小越好,這樣一個模塊變動,另一個模塊就不會變動

 

松耦合的方法,一般是底層函數,功能盡量單一,盡量避免修改底層函數,功能相近的函數,可以設計兩個以上,不要為了減少代碼量,把一個函數的功能設計太多

 

松耦合系統通常是基於消息的系統,此時客戶端和遠程服務並不知道對方是如何實現的。客戶端和服務之間的通訊由消息的架構支配,只要消息符合協商的架構,則客戶端或服務的實現就可以根據需要進行更改,而不必擔心會破壞對方

 

松耦合通訊機制提供了緊耦合機制所沒有的許多優點,並且他們有助於降低客戶端和遠程服務之間的依賴性。但是,緊耦合性通常可以提供性能的好處,便於在客戶端和服務之間進行更為緊密的集成(這在存在安全性和事務處理要求時,可能是必須的)

 

緊耦合架構本質是一個client/server模型,客戶機發起請求給服務器,服務器收到,根據請求做出回答,然后反饋給客戶機。這種架構最典型的應用就是我們

每天都用到的web服務。優點嘛,就是簡單。架構簡單、設計簡單、開發周期短、能夠快速投入 部署和應用。在Laxcus集群的早期運行中,這些特點都得到有力的驗證。

緊耦合架構

但是到了后期,隨着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、綜合以上措施,他們共同增強了系統穩定性

 

最后用一張表對兩種架構做個對比,作為兩種架構性能特點的總結

 

緊耦合架構

松耦合架構

工作方式

同步

異步

程序關聯依賴

業務邏輯關系

集中控制

分散控制

設計難度

容易

比較復雜

響應能力

和並行工作量成反比

時效表現

實時

無要求

業務適用范圍

簡單計算

復雜計算

安全

應用領域

小規模並行處理環境

大規模、超大規模並行處理環境

系統穩定性

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM