1. 程式人生 > >理解主從裝置模式(Master-Slave)

理解主從裝置模式(Master-Slave)

前言

在給定上下文的軟體體系結構中,為了解決某些經常出現的問題而形成的通用且可重用的解決方案稱之為架構模式,而常見的體系架構模式主要有以下十種

  • 分層模式
  • 客戶端-伺服器模式
  • 主從裝置模式
  • 管道-過濾器模式
  • 代理模式
  • 點對點模式
  • 事件匯流排模式
  • 模型-檢視-控制器模式
  • 黑板模式
  • 直譯器模式

而下面我將詳細介紹主從裝置模式的概念,以及它的用法、在實際中常見的應用場景和優缺點等

主從裝置模式

主從裝置模式也叫做主僕模式英文簡稱為Master-Slave,核心思想是基於分而治之的思想,將一個原始任務分解為若干個語義等同的子任務,並由專門的工作者執行緒來並行執行這些任務,原始任務的結果是通過整合各個子任務的處理結果形成的.主要的使用場景有

  • 平行計算,以提升計算效能
  • 容錯處理,以提升計算的可靠性
  • 計算精度,以提高計算的精確程度

平行計算下模式舉例

在分散式的系統中,這個模式還是比較常用的,簡單的說,主從(Master-Slave)程序-執行緒的關係類似,Master只有一臺機器作為Master,其他機器作為Slave,這些機器同時執行組成了叢集.Master作為任務排程者,給多個Slave分配計算任務,當所有的Slave將任務完成之後,最後由Master彙集結果,這個其實也是MapReduce思想所在.
mark
例如在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

優缺點

  • 優點:準確性——將服務的執行委託給不同的從裝置,具有不同的實現。
  • 缺點:從裝置是孤立的,沒有共享的狀態。主-從通訊中的延遲可能是一個問題,例如在實時系統中。這種模式只能應用於可以分解的問題。

參考