前言 在給定上下文的軟體體繫結構中,為瞭解決某些經常出現的問題而形成的通用且可重用的解決方案稱之為架構模式,而常見的體系架構模式主要有以下十種 分層模式 客戶端 伺服器模式 主從設備模式 管道 過濾器模式 代理模式 點對點模式 事件匯流排模式 模型 視圖 控制器模式 黑板模式 解釋器模式 而下麵我將詳 ...
前言
在給定上下文的軟體體繫結構中,為瞭解決某些經常出現的問題而形成的通用且可重用的解決方案稱之為架構模式,而常見的體系架構模式主要有以下十種
- 分層模式
- 客戶端-伺服器模式
- 主從設備模式
- 管道-過濾器模式
- 代理模式
- 點對點模式
- 事件匯流排模式
- 模型-視圖-控制器模式
- 黑板模式
- 解釋器模式
而下麵我將詳細介紹主從設備模式
的概念,以及它的用法、在實際中常見的應用場景和優缺點等
主從設備模式
主從設備模式
也叫做主僕模式
英文簡稱為Master-Slave
,核心思想是基於分而治之的思想,將一個原始任務分解為若幹個語義等同的子任務,並由專門的工作者線程來並行執行這些任務,原始任務的結果是通過整合各個子任務的處理結果形成的.主要的使用場景有
- 並行計算,以提升計算性能
- 容錯處理,以提升計算的可靠性
- 計算精度,以提高計算的精確程度
並行計算下模式舉例
在分散式的系統中,這個模式還是比較常用的,簡單的說,主從(Master-Slave)
與進程-線程
的關係類似,Master
只有一臺機器作為Master
,其他機器作為Slave
,這些機器同時運行組成了集群
.Master
作為任務調度者,給多個Slave
分配計算任務,當所有的Slave
將任務完成之後,最後由Master
彙集結果,這個其實也是MapReduce
思想所在.
例如在Hadoop
中,HDFS
採用了基於Master/Slave
主從架構的分散式文件系統,一個HDFS
集群包含一個單獨的Master
節點和多個Slave
節點伺服器,這裡的一個單獨的Master節點的含義是HDFS系統中只存在一個邏輯上的Master組件。一個邏輯的Master節點可以包括兩台物理主機,即兩台Master伺服器、多台Slave伺服器。一臺Master伺服器組成單NameNode
集群,兩台Master伺服器組成雙NameNode
集群,並且同時被多個客戶端訪問,所有的這些機器通常都是普通的Linux機器,運行著用戶級別(user-level)的服務進程.
在上圖中展示了 HDFS 的 NameNode , DataNode 以及客戶端之間的存取訪問關係, NameNode
作為 Master
服務,它負責管理文件系統的命名空間和客戶端對文件的訪問。NameNode
會保存文件系統的具體信息,包括文件信息、文件被分割成具體block
塊的信息、以及每一個block
塊歸屬的DataNode
的信息。對於整個集群來說,HDFS
通過NameNode
對用戶提供了一個單一的命名空間。DataNode
作為slave
服務,在集群中可以存在多個。通常每一個DataNode
都對應於一個物理節點。DataNode
負責管理節點上它們擁有的存儲,它將存儲劃分為多個block
塊,管理block
塊信息,同時周期性的將其所有的block
塊信息發送給NameNode
。
優缺點
- 優點:準確性——將服務的執行委托給不同的從設備,具有不同的實現。
- 缺點:從設備是孤立的,沒有共用的狀態。主-從通信中的延遲可能是一個問題,例如在實時系統中。這種模式只能應用於可以分解的問題。