Когда использовать локальных против удаленных актеров? - PullRequest
5 голосов
/ 06 сентября 2011

Когда я должен использовать актеров против удаленных актеров в Akka?

Я понимаю, что оба могут увеличить масштаб машины, но масштабировать могут только удаленные актеры, так есть ли практическое использование нормального актера в производстве?

Если удаленный субъект имеет незначительные накладные расходы при начальной настройке и не имеет других основных накладных расходов, чем у обычного субъекта, то я думаю, что использование удаленного субъекта будет стандартом, поскольку он может масштабироваться с легкостью. Даже если нет необходимости масштабировать производственный код, было бы неплохо иметь такую ​​возможность (если она не поставляется с багажом).

Любое понимание того, когда использовать Actor vs. Remote Actor, было бы очень полезно.

Ответы [ 3 ]

8 голосов
/ 06 сентября 2011

Удаленные субъекты не могут масштабироваться, они являются только удаленными ссылками на локального субъекта на другом компьютере.

Для Akka 2.0 мы представим кластерные субъекты, которые позволят вам написать приложение Akka и масштабировать его.только используя config.

2 голосов
/ 02 ноября 2012

Обычные актеры могут быть использованы при отправке сообщений в локальном проекте.Что касается Remote Actors, вы можете использовать его при отправке сообщений в зависимые проекты, которые связаны с проектом, отправляющим сообщение.

Пожалуйста, обратитесь к здесь для Remote Akka Actors

http://doc.akka.io/docs/akka/snapshot/scala/remoting.html

1 голос
/ 19 октября 2014

Вопрос задает вопрос: «Если у удаленного субъекта есть только незначительные накладные расходы на начальную настройку и нет других значительных накладных расходов, тогда я думаю, что использование удаленного субъекта будет стандартом».Тем не менее, ошибки распределенных вычислений указывают на то, что ошибкой проектирования является предположение, что удаленное взаимодействие с любой технологией не требует дополнительных затрат.У вас есть накладные расходы на копирование сообщений в байты и их передачу через сетевой интерфейс.У вас также есть вся сложность, связанная с тем, что различные процессы работают, отключаются, останавливаются или недоступны, а в сети возникают сбои, ведущие к потере, дублированию или переупорядочению сообщений.

В этой замечательной статье есть реальные примеры странных сетевых ошибок, из-за которых удаленное управление трудно сделать пуленепробиваемым.Руководитель проекта Akka Роланд Кулн в своем бесплатном видео-курсе об akka говорит, что в своем опыте на каждый 1T отправляемых сетевых сообщений он видит повреждение. Заметки о распределенных системах для молодых кровей говорит, что "распределенным системам, как правило, требуется реальное, а не имитированное распределение, чтобы избавиться от ошибок", поэтому даже хорошие модульные тесты не помогут создать идеальную систему.Есть много советов, что удаленное взаимодействие не "бесплатно", но тяжелая работа, чтобы стать совершенным.

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

В тот момент, когда вы начинаете использовать удаленное взаимодействие, вы получаете распределенную систему, которая создает проблемы, которые обсуждаются в Распределенные системы для удовольствия и получения прибыли .Если вы не делаете очень простые вещи, такие как калькуляторы без сохранения состояния, которые являются идемпотентными для дублированных сообщений, вещи становятся хитрыми.Одно из заданий в этом видеокурсе akka по ссылке выше - создать реплицированное хранилище значений ключей, которое может справиться с потерянными сообщениями, написав логику самостоятельно.Это далеко не легкое задание.Распределение состояний по различным процессам становится очень сложным, субъекты инкапсулируют состояние, поэтому распределение субъектов может быть очень сложным, в зависимости от требований согласованности и доступности системы, которую вы строите.

Все это подразумевает, что если вы можете избежать удаленного взаимодействия и достичь того, чего вам нужно достичь, то вам будет разумно избежать этого.Если вам нужно удаленное взаимодействие, Akka сделает это проще благодаря прозрачности .Так что пока это отличный набор инструментов, который можно взять с собой на работу;Вы должны дважды проверить, нужны ли для работы все инструменты или только самые простые в коробке.

...