Akka.NET: ограничить создание дочерних акторов в кластере akka.net одной машиной
У нас есть определенный сценарий в нашем приложении - все дочерние акторы в этом приложении имеют дело с огромным объемом данных (около 50–200 МБ). В связи с этим мы решили создать дочерних акторов на том же компьютере (рабочем процессе), на котором был создан родительский актер.
В настоящее время это достигается использованием ролей. Мы также используем кэш-память.NET для передачи данных (несколько МБ) между дочерними субъектами.
Вопрос: Можно ли отключить кластеризацию у дочерних актеров? Удалит ли это сетевые издержки и просто использует потоки для выполнения задачи?
Пожалуйста, порекомендуйте.
0 ответов
Похоже, вы использовали маршрутизатор кластерного пула для удаленного развертывания рабочих субъектов в кластере - вы явно не упомянули об этом в своем описании, но это звучит так.
Это также звучит так: то, что вы на самом деле пытаетесь сделать, - это воспользоваться преимуществом локальной близости: задействовать в одном и том же процессе актеров-детей для одних и тех же лиц.
Вот что я бы порекомендовал:
- Пусть все рабочие субъекты будут созданы как дочерние элементы родителей локально внутри одного и того же процесса, но либо с использованием чего-то вроде шаблона дочернего элемента на объект или маршрутизатора локального пула.
- Распределите работу между рабочими узлами, используя кластерный групповой маршрутизатор, роли и т. Д.
- Любая работа в такой большой рабочей нагрузке должна передаваться напрямую от родителей к детям, без необходимости обходить туда-сюда между остальной частью кластера.
Учитывая информацию, которую вы предоставили здесь, это как можно ближе к "общему" ответу - надеюсь, вы найдете его полезным!