一、耦合
耦合是兩個或多個模組之間的相互關聯。在軟體工程中,兩個模組之間的耦合度越高,維護成本越高。因此,在系統架構的設計過程中,應減少各個模組之間的耦合度,以提高應用的可維護性。
二、緊耦合
緊耦合架構本質是client/server的模型,如下圖所示:
優點是:架構簡單、設計簡單、開發周期短、能夠快速的開發、投入、部署、應用。
但隨著集群規模的擴大,系統的穩定性逐漸變差,主要原因如下:
1、同步操作導致對網路資源消耗大。同步操作在資料傳送和資料返回之間,有很大一段是空閒的,這種空閒占用是對網路資源的極大浪費。
2、安全控制力度差,因為伺服器直接暴露給客戶機,容易引發網路攻擊行為。
3、程式**之間關聯度過高,不利於模組化處理。
三、松耦合
松耦合架構本質上是在client/server模型之間加入乙個**,把cs模型變成cas模型。
在新的架構下,客戶機的角色不變,**伺服器承擔起與客戶機的通訊,和對客戶機的識別判斷工作,伺服器位於**伺服器後面,對客戶機來說不可見,它只負責資料處理工作,另外我們也把cs模型的同步操作改為cas的**處理。
如下圖所示:
優點如下:
1、多工並行處理能力獲得極大提公升。
2、實現負載自適應機制(根據當時執行環境,松耦合架構分配並行工作任務,避免超載現象)。
3、基本杜絕了對server服務端的網路攻擊行為,由於**伺服器的隔絕和篩查作用, 同時結合其它安全管理手段,外部攻擊在**伺服器處就被識別和過濾掉了,這樣就保護了後面的伺服器不受影響。
4、非同步操作減少了網路資源消耗和操作關聯。
5、提高了系統的可維護性。
松耦合和緊耦合的對比
緊耦合架構
松耦合架構
工作方式
同步非同步
程式關聯依賴強弱
業務邏輯關係
集中控制
分散控制
設計難度
容易比較複雜
響應能力
快和並行工作量成反比
時效表現
實時無要求
業務使用範圍
簡單計算
複雜計算安全弱
強應用領域
小規模並行處理環境
大規模、超大規模並行環境
系統穩定性弱強
四、解耦
解耦的字面意思是解除耦合關係,但是在軟體工程中,是不可能做到完全解耦的,因此,降低偶耦合度即可以理解為解耦。
參考:
耦合還是解耦合?
我們的許多設計思想中很多地方都體現了解耦合的思想,這是 b 應對易於變化 b 的一種很好的解決手段,而在這些手段中最重要的解決方法就是 b 新增中間層 b 所謂新增中間層 比如我們常見的面向介面程式設計,其實就是新增了乙個中間的層次,遮蔽掉了一些變化,還有就是我們常用的設計模式,什麼 啊,faced...
資料庫耦合 解耦
隨著業務越來越複雜,資料量越來越大,併發量越來越大,資料庫的效能越來越低。好不容易找運維申請了兩台機器,讓dba部署了幾個例項,想把一些業務庫拆分出來,卻發現拆不出來,擴不了容,尷尬!因為資料庫強關聯在一起,無法通過增加資料庫例項擴容,就是乙個耦合的典型案例。場景還原 有乙個公共使用者資料庫db u...
程式設計的解耦和耦合
耦合 coupling 表示兩個子系統 或類 之間的關聯程度。當乙個子系統 或類 發生變化時對另乙個子系統 或類 的影響很小,則稱它們是鬆散耦合的 反之,如果變化的影響很大時,則稱它們是緊密耦合的。耦合的強弱取決於模組間接間的複雜性 引用模組的位置和資料的傳送方式等。解耦就是解除耦合關係。模組間有依...