Акка для симуляции - PullRequest
       9

Акка для симуляции

7 голосов
/ 20 марта 2012

Я новичок в акке и актерском паттерне, поэтому не уверен, подходит ли он моим потребностям.

Я хочу создать симуляцию с аккой и миллионами сущностей (представляющих собой доменные объекты - более поздние актеры), которые могут влиять друг на друга. Таким образом, думая как моделирование с более или менее «нечетким» результатом, мы имеем массив с сущностями, где каждая из этих сущностей имеет скорость, но мешается сущностями перед реальной сущностью. Когда начинается симуляция, каждая сущность должна перемещать n-полей или, если другие мешают, меньше полей. У нас есть несколько итераций, и в конце мы получаем новый порядок. Это повторяется для некоторых раундов, пока мы не хотим увидеть «снимок» ведущих объектов (которые затем могут быть удалены до начала следующего раунда).

Так что я не понимаю, смогу ли я создать это с помощью akka, потому что:

Возможно ли иметь глобальный список с позицией каждого актера, чтобы они знали, в какой позиции они находятся, а какие перед ними? Насколько я понимаю, это нарушает инкапсуляцию актеров. Я могу поставить позицию актера в самого актера, но как я могу увидеть / уведомить актеров вокруг этого актера? Помимо этого, глобальный список создаст проблемы синхронизации и повлияет на производительность, которая прямо противоположна желаемому поведению (и дополняет шаблон akka / actor-pattern)

Что я пропустил? Нужно ли искать другой подход к дизайну? Спасибо за предложения.

Обновление: работать с шиной событий и классификаторами тоже не представляется возможным. Ссылаясь на документацию :

«следовательно, он не подходит для случаев, когда подписки изменяются с очень высокой частотой»

1 Ответ

2 голосов
/ 03 июня 2012

Актерская модель очень хорошо подходит для вашего сценария. Актеры общаются, отправляя сообщения, поэтому каждый актер может отправлять сообщения своим соседям, содержащие его позицию. Конечно, каждый актер не может знать о каждом другом акторе в системе (в любом случае, неэффективно), поэтому вам придется также разработать схему, хотя каждый актер знает, , какие являются его соседями.

Что касается получения снимка системы, просто выберите центрального актера, которого все знают и знают все.

Кажется, ты только начинаешь играть с актерами. Прочитайте немного больше - сайт akka - хороший ресурс - и при необходимости вернитесь и уточните свой вопрос.

Ваша проблема звучит как симуляция n-тела , поэтому изучение этого может также помочь.

...