Позволяет ли какая-либо модель актора в 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. Что касается распределения работы - да, это также легко и частично уже описано в том, как я изложил взаимодействия надзора.

Надеюсь, это поможет, счастливого пути!

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