Akka.NET: ограничить создание дочерних акторов в кластере akka.net одной машиной

У нас есть определенный сценарий в нашем приложении - все дочерние акторы в этом приложении имеют дело с огромным объемом данных (около 50–200 МБ). В связи с этим мы решили создать дочерних акторов на том же компьютере (рабочем процессе), на котором был создан родительский актер.

В настоящее время это достигается использованием ролей. Мы также используем кэш-память.NET для передачи данных (несколько МБ) между дочерними субъектами.

Вопрос: Можно ли отключить кластеризацию у дочерних актеров? Удалит ли это сетевые издержки и просто использует потоки для выполнения задачи?

Пожалуйста, порекомендуйте.

0 ответов

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

Это также звучит так: то, что вы на самом деле пытаетесь сделать, - это воспользоваться преимуществом локальной близости: задействовать в одном и том же процессе актеров-детей для одних и тех же лиц.

Вот что я бы порекомендовал:

  1. Пусть все рабочие субъекты будут созданы как дочерние элементы родителей локально внутри одного и того же процесса, но либо с использованием чего-то вроде шаблона дочернего элемента на объект или маршрутизатора локального пула.
  2. Распределите работу между рабочими узлами, используя кластерный групповой маршрутизатор, роли и т. Д.
  3. Любая работа в такой большой рабочей нагрузке должна передаваться напрямую от родителей к детям, без необходимости обходить туда-сюда между остальной частью кластера.

Учитывая информацию, которую вы предоставили здесь, это как можно ближе к "общему" ответу - надеюсь, вы найдете его полезным!

Другие вопросы по тегам