Akka-как масштабировать при использовании TimerBasedThrottler и RoundRobinRouter
У меня есть проект, в котором Супервизор-актер создает актора на основе класса Akka TimerBasedThrottler
. Этот субъект динамически создает дочерние субъекты для выполнения запросов веб-служб к вышестоящим системам. Это прекрасно работает в небольших масштабах, однако по мере того, как количество запросов, которые начинают накапливаться в моих почтовых ящиках актеров, начинает расти, а время отклика ухудшается.
Что мне нужно, так это возможность создать RoundRobinRouter
, который будет загружать запросы баланса более чем на один экземпляр супервизора. Однако я нуждаюсь в TimerBasedThrottler
быть единственным экземпляром, который совместно используется каждым экземпляром актора, созданным RoundRobinRouter
.
Может ли кто-нибудь помочь мне с тем, как я могу использовать RoundRobinRouter
для создания новых экземпляров supervisor Actor, проходящих в одном экземпляре TimerBasedThrottler
?
2 ответа:
Ваше описание кажется противоречивым: дросселирование ограничит количество запросов, которые могут быть обработаны, и добавление маршрутизатора перед этим не поможет, потому что ограничение должно быть наложено на всю группу субъектов.
Когда ваша система имеет такой предел пропускной способности, крайне важно встроить управление потоком: ваш супервайзер должен будет отслеживать количество невыполненных запросов и ограничивать их, чтобы время отклика было ниже требуемого предела. Если поступит больше запросов вы ничего не можете сделать, кроме как отклонить их (т. е. сразу же отправить отрицательный ответ).