2013-03-24 46 views
1

我正在創建一個分佈式系統,其中有許多使用akka/scala的演員。大多數「工人」演員將在大量數據的不同子集上執行基本相同的操作。當需要計算時,不是將數據存儲在公共數據庫中,而是將其分發給工作人員,但我一直在考慮在工作人員創建時將數據分開,並讓每個工作人員負責持久保存數據操作。負責堅持他們將使用的數據的行動者?

這是一個常見的架構,它在什麼情況下才有意義?創建一個體繫結構的缺點是什麼?每個代理負責持久化它將要工作的數據?

+0

是否所有的工作人員都在同一個節點上運行,或者它將成爲在不同節點上運行的遠程參與者? – 2013-03-24 09:56:57

+0

你正在使用[agents](http://doc.akka.io/docs/akka/2.1.2/scala/agents.html),還是你的演員? – 2013-03-24 10:51:28

+0

@alois cochard是的,我希望他們會在不同的節點上。 – mushroom 2013-03-24 16:48:20

回答

2

聽起來像一個典型的分而治之的方法。

在考慮讓工作人員存儲處理過的數據時要記住的事情是該過程通常是IO限制。根據您存儲數據的方式,您可能無法獲得任何收益。

如果您正在使用遠程參與者,並將數據存儲在執行worker的節點的本地磁盤上,那沒問題。由於IO寫入可分佈在羣集中的硬盤驅動器時被綁定。如果所有在同一節點上運行的工作人員都不會獲得任何收益,因爲瓶頸將寫入磁盤。

希望有所幫助。