2011-09-14 51 views
1

我需要模擬Java中有主系統和多個工作系統的系統。每個工作人員可以在本地處理其數據,但需要與主人通信以從其他節點讀取數據。工人應該同時工作。Java中的分佈式主 - 工作者體系結構模擬設計

如何模擬此係統?我是否需要爲每個正在運行的工作者和主線程啓動一個新線程?有另一種方法嗎?

回答

2

如果你想這樣做,一臺機器上,然後我看到兩個選項:

  1. 創建一個主站和一個工人的應用程序(請確保您可以運行這些的多個實例)。運行一個主應用程序和多個工作應用程序實例。
  2. 創建一個單一的應用程序,其中您有一個Master類的實例和Worker類的多個實例。讓Master在單獨的線程中運行,並讓每個Worker也在其自己的線程中運行。

因此,第一個選項是將每個「節點」(master或worker)作爲單獨的進程運行,而第二個選項是將每個「node」作爲單獨的線程運行。

0

這是一個非常通用的問題,對許多架構解決方案都是開放的。我想介紹一下我以前用過的那個。我在這裏使用了RMI來簡化遠程調用。

所有主從進程都是RMI服務。使用RMI守護進程(RMID)可以生成主服務器和從服務器,這些守護進程可以在發生JVM崩潰或任何其他「異常」原因導致服務中斷的情況下具有「提升」服務的額外功能。一般RMI服務基於定義客戶端和服務器之間契約的接口工作。比方說,例如,我必須寫一個解決方程式的服務。

我們從創建兩個服務開始:主從服務。這兩個服務都實現/向客戶端展示相同的接口。唯一的區別是,「主」服務將全權負責跨作業「分叉」給不同的奴隸代理人,獲得響應(或者根據需要重新安排他們)並將其返回給客戶端。主人是一個簡單的RMI服務,它接受「方程式」列表並將其拆分到不同的客戶端。很顯然,這裏的主控制器引用了它在RMI句柄方面管理的所有客戶機(即主機和從機之間的通信又是一個RMI調用)。

在這裏,我們還有很多配置主人「查找」奴隸的可能性,但我相信你可以很容易地解決這個問題。該體系結構具有基於網格的解決方案的優勢,在這種解決方案中,您不受單個進程限制,無需爲您完成所有工作,從而獲得適用於JVM進程的單一堆大小的彈性和自由。

我真的沒有使用它們,但RioJINI是你應該看看,如果你想用Java構建分佈式系統。