2013-03-24 1 views
1

Я создаю распределенную систему со многими актерами, использующ akka/scala. Большинство «рабочих» актеров будут выполнять практически ту же операцию на другом подмножестве большого набора данных. Вместо того, чтобы хранить данные в общей базе данных и распространять их на рабочих участников, когда вычисление необходимо, я думал о разделении данных между действующими субъектами по мере их создания и заставляя каждого работника отвечать за сохранение данных, которые он в конечном итоге действуют на.Актеры, ответственные за сохранение данных, которые они будут использовать?

Является ли это общей архитектурой и при каких обстоятельствах это имеет смысл? Каковы недостатки в создании архитектуры, в которой каждый агент несет ответственность за сохранение данных, над которыми он будет работать?

+0

Все ли рабочие, работающие на одном и том же узле, или это удаленные участники, работающие на разных узлах? –

+0

Вы используете [агенты] (http://doc.akka.io/docs/akka/2.1.2/scala/agents.html), или это актеры, которые вы имеете в виду. –

+0

@alois cochard да, я ожидаю, что они будут на разных узлах. – mushroom

ответ

2

Звучит как типичный подход к разряду и покорению.

Следует иметь в виду, думая о том, чтобы позволить работникам, хранящим обработанные данные, в том, что этот процесс обычно связан с IO. В зависимости от того, как вы храните данные, вы не можете получить какую-либо прибыль.

Если вы используете удаленные исполнители и сохраняете данные на локальном диске узла, где выполняется рабочий, это нормально. Поскольку IO привязан при записи на жесткий диск, который может быть распределен в кластере. Если все рабочие, работающие на одном узле, вы не получите никакой выгоды, потому что узкое место будет записывать на диск.

Надеюсь, что помогите.

Смежные вопросы