Вопрос задает вопрос: «Если у удаленного субъекта есть только незначительные накладные расходы на начальную настройку и нет других значительных накладных расходов, тогда я думаю, что использование удаленного субъекта будет стандартом».Тем не менее, ошибки распределенных вычислений указывают на то, что ошибкой проектирования является предположение, что удаленное взаимодействие с любой технологией не требует дополнительных затрат.У вас есть накладные расходы на копирование сообщений в байты и их передачу через сетевой интерфейс.У вас также есть вся сложность, связанная с тем, что различные процессы работают, отключаются, останавливаются или недоступны, а в сети возникают сбои, ведущие к потере, дублированию или переупорядочению сообщений.
В этой замечательной статье есть реальные примеры странных сетевых ошибок, из-за которых удаленное управление трудно сделать пуленепробиваемым.Руководитель проекта Akka Роланд Кулн в своем бесплатном видео-курсе об akka говорит, что в своем опыте на каждый 1T отправляемых сетевых сообщений он видит повреждение. Заметки о распределенных системах для молодых кровей говорит, что "распределенным системам, как правило, требуется реальное, а не имитированное распределение, чтобы избавиться от ошибок", поэтому даже хорошие модульные тесты не помогут создать идеальную систему.Есть много советов, что удаленное взаимодействие не "бесплатно", но тяжелая работа, чтобы стать совершенным.
Если вам нужно использовать удаленное взаимодействие для обеспечения доступности или для перемещения в крупном масштабе, обратите внимание, что akka выполняет доставку хотя бы раз с возможным дублированием.Поэтому вы должны убедиться, что дублированные сообщения не приводят к плохим результатам.
В тот момент, когда вы начинаете использовать удаленное взаимодействие, вы получаете распределенную систему, которая создает проблемы, которые обсуждаются в Распределенные системы для удовольствия и получения прибыли .Если вы не делаете очень простые вещи, такие как калькуляторы без сохранения состояния, которые являются идемпотентными для дублированных сообщений, вещи становятся хитрыми.Одно из заданий в этом видеокурсе akka по ссылке выше - создать реплицированное хранилище значений ключей, которое может справиться с потерянными сообщениями, написав логику самостоятельно.Это далеко не легкое задание.Распределение состояний по различным процессам становится очень сложным, субъекты инкапсулируют состояние, поэтому распределение субъектов может быть очень сложным, в зависимости от требований согласованности и доступности системы, которую вы строите.
Все это подразумевает, что если вы можете избежать удаленного взаимодействия и достичь того, чего вам нужно достичь, то вам будет разумно избежать этого.Если вам нужно удаленное взаимодействие, Akka сделает это проще благодаря прозрачности .Так что пока это отличный набор инструментов, который можно взять с собой на работу;Вы должны дважды проверить, нужны ли для работы все инструменты или только самые простые в коробке.