У меня есть приложение Scala с использованием Akka, которое получает запросы REST, выполняет некоторые операции с базой данных и отвечает некоторой информацией клиенту. Как бы то ни было, мои операции с db занимают много времени, и мой агент с включенным REST не может отвечать на новые запросы тем временем, хотя я мог бы запускать много операций одновременно с БД. Я использую аннотации javax.ws.rs для методов REST-enable в моем акторе.Как масштабировать приложение Scala REST, использующее Akka?
Вопрос; Каков наилучший способ включить мое приложение для обработки большого количества одновременных запросов?
EDIT: Я добавлю несколько примеров кода.
import se.scalablesolutions.akka.actor._
import javax.ws.rs._
@Path("/test")
class TestService {
@GET
def status() =
actorPool !! Status(session).
getOrElse(<error>Unable to connect to service</error>)
}
class TestActor {
def receive = {
case Status() => {
reply(SomeObject.slowDBMethod)
}
}
}
case class Status()
EDIT2: Это то, что я получаю в журнале. Я отправляю три запроса из своего браузера так быстро, как только могу переключаться на вкладки и нажимать F5, но RS-бит все еще ждет завершения первого запроса, прежде чем обращаться с ним.
[INFO] [2010-08-29 16:27:03,232] [akka:event-driven:dispatcher:global-15] c.n.StatusActor: got Slow request
[INFO] [2010-08-29 16:27:06,916] [akka:event-driven:dispatcher:global-10] c.n.StatusActor: got Slow request
[INFO] [2010-08-29 16:27:10,589] [akka:event-driven:dispatcher:global-3] c.n.StatusActor: got Slow request
Возможно, вы захотите заглянуть в скамью Apache вместо того, чтобы нажимать F5 так много отличного инструмента для тестирования параллелизма. http://httpd.apache.org/docs/2.2/programs/ab.html – cbmeeks