架構模式之主從設備模式


主從設備模式根據名字來說就知道,擁有一主一從。對他的操作就有主有次。這種模式主要有兩部分組成,主設備和從設備。主設備組件在相同的設備組件中分配工作,並計算最終結果,而這些結果是以后從設備返回的。

主從設備模式又稱主仆模式這種模式的核心思想試講一個原始的任務,變為不同的子任務,就像一個主人把任務分配給自己的多個仆人一樣進行完成,當仆人完成各自的子任務之后再交還結果給自己的主人,主人再把所有仆人的結果整合到一起,得到一個真正的綜合結果,這就是大概的運行思路,但是要仆人進行運算就得給仆人時間和場地,所以程序還要專門的生出讓仆人工作的場地,就是說要提供專門的線程來讓子程序進行運算,所以我們可以看出來,主從模式實際是一種多線程模式。

多線程模式就有多線程模式的好處,首先因為線程較多,我們程序中的仆人可以一起進行運算,這就導致了運行效率的提高,也提高了程序的性能,讓程序運行的資源利用率提高,進而造成的結果就是程序運行速度的提高,計算精度的提高,由於線程之多,我們程序的容錯率也大大提高。

但同時這也造就了一些無法改變的缺點,由於線程的不斷增多,會導致硬件的內存會被不斷的占用,導致內從在運行大程序時不一定夠用,而且由於主仆之間不斷地進行數據的交流,交流必然需要時間,這就導致了時間上會產生一些問題,主人要一直協調與不同仆人之間的時間交流問題,導致了數據交換和運行的不及時性,仆人之間也會互相爭奪資源來進行自己的運算。

評價:提高計算效率,又實現了信息隱藏。

使用場景

在數據庫復制中,主數據庫被認為是權威的來源,並且要與之同步
在計算機系統中與總線連接的外圍設備(主和從驅動器)

並行計算,以提升計算性能

容錯處理,以提升計算的可靠性

計算精度,以提高計算的精確程度

收集子任務處理結果的2種方法:
1)Master和Slave使用同一個存儲倉庫
2)使用Future模式
可靠性與異常處理:
可以捕獲子任務異常,可以考慮由其自身重新執行處理失敗的子任務,即在客戶端線程執行。

 

在分布式的系統中,這個模式還是比較常用的,簡單的說,主從(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。

我們可以把主從模式認為是一種一對多的模式,由一個主模式對應着多個它下屬的從模式。這種模式我們首先可以利用它來進行數據庫標的設計,建立一個數據庫的主從表,而最基本的就是一個主表,一個從表。進而利用這種結構就可以完成一種最簡單的程序的搭建,比如說百度貼吧的最簡化搭建,每個人都可以在貼吧里帖子,每一個不同的吧就可以看做是一個主表,每個人發的帖子就可以看做是一個從表。從這個例子中,我們很明顯的就可以知道主從關系是什么對應關系了,主表就是貼吧,從表就是吧里發的帖子,這兩者就是一種一對多的關系,不但如此,每個帖子因為有人可以回復,一個帖子就擁有了多個回復,這又構成了一個新的主從關系表,凡是類似這種的都可以利用主從模式來進行數據庫的建立。

優點:准確性——將服務的執行委托給不同的從設備,具有不同的實現。

缺點:從設備是孤立的:沒有共享的狀態。主-從通信中的延遲可能是一個問題,例如在實時系統中。這種模式只能應用於可以分解的問題。


免責聲明!

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



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