2014-10-30 3 views
0

Я ищу предложения о том, как выполнить следующее. Приложение Akka, которое будет работать как кластер, будет сохраняться в бэкэнд-веб-сервисе. Назван каждый ресурс, который я сохраняю. Например: A, B, CПоследовательный запуск ресурса Akka

Там будет очередь изменений для каждого ресурса, и я ищу идеи о том, как я могу иметь такую ​​конфигурацию, которая позволяет мне контролировать следующее:

  • Максимальное количество REST вызовов выполняется в любой момент времени (общий параллелизм)
  • Убедитесь, что только один запрос REST для каждого имени ресурса в ходе
  • это нормально для одновременных запросов, до тех пор, пока они не для тот же ресурс
  • Именованные ресурсы динамические, основанные на записях в базе данных

Благодаря

ответ

0

Мое видение находится рядом:

Вам нужно иметь какой-то руководитель актера, который поддерживает какое-то состояние. По каждому запросу этому супервизору вы проверяете, есть ли у вас этот ресурс, который в настоящее время обрабатывается. Если да, то вы должны сохранить этот запрос на некоторое хранение/очередь. Если нет, создайте нового актера и поставьте этот актер и ресурс в указанное состояние. По завершении удалите актер и ресурс из состояния. Я настоятельно рекомендую вам иметь хранилище/очередь для временного сохранения запроса актеру-наблюдателю. В таком случае вы защищаете себя от подавляющей системы. Чтобы гарантировать общее требование параллелизма, вы можете сделать внутреннее состояние супервизора ограниченным, и если размер превышает ваш хранимый запрос на хранение/очередь.

Конечно, вам нужен какой-то механизм опроса этой очереди и запрос супервизором

Смежные вопросы