Позволяет ли какая-либо модель актора в java группировать задачи?
У меня есть 1000 строк данных в MySQL, которые мне нужно обновить на основе некоторой логики, которая по какой-то причине не может быть сделана в MySQL с использованием пакетного обновления и должна быть выполнена в Java. Мне нужно разделить задания на 20 управляемых единиц по 50 задач в каждой так что для каждой группы у меня будет 50 актеров, выполняющих работу.
Я сделал эту диаграмму, чтобы показать, что я имею в виду
Какая модель актера в java может позволить мне группировать актеров таким образом?
1 ответ
Как отмечает @Bob, вы можете легко сделать это с помощью Akka. Ваша иерархия актерского надзора будет выглядеть так: 1 SuperMaster
Актер, 20 лет Master
Актеры, каждый из которых будет нести ответственность за один кусок работы. Они спрашивают SM
для работы, и создать 50 Slave
актеры, делегируя работу им. Вы можете настроить стратегию надзора, которая будет определять, умирает ли подчиненный, вам нужно перезапустить эту часть работы, или вам следует отбросить всю "группу" и сказать SuperMaster, что эта группа работ провалилась и т. Д. Если все Slave
заканчивает свою работу, это говорит об этом Master
, Если вся работа выполнена (M
получил 50 "выполненных" сообщений), он может сказать, что это SuperMaster
что вся работа была завершена, и мы закончили обработку работы.
Вы можете очень хорошо смоделировать сбой и восстановление (например, "продолжайте попытки до тех пор, пока он не преуспеет" или "прервать все выполнение в случае сбоя группы" и т. Д.), Используя иерархии контроля Akka. Что касается распределения работы - да, это также легко и частично уже описано в том, как я изложил взаимодействия надзора.
Надеюсь, это поможет, счастливого пути!