Я использую Акку-клиент, мой build.sbt конфигурация:балансировки нагрузки Акка-клиент
scalaVersion := "2.11.7"
libraryDependencies += "com.typesafe.akka" % "akka-actor_2.11" % "2.4.2"
libraryDependencies += "com.typesafe.akka" % "akka-http-experimental_2.11" % "2.4.2"
libraryDependencies += "com.typesafe.akka" % "akka-http-spray-json-experimental_2.11" % "2.4.2"
libraryDependencies += "com.typesafe.akka" % "akka-slf4j_2.11" % "2.4.2"
Я обнажая простую REST API только с одним GET URL-адрес
обув является функция, которая возвращает будущий
implicit val actorSystem = ActorSystem("system", config)
implicit val actorMaterializer = ActorMaterializer()
val route: Route = {
get {
path("foo") {
complete { foo }
}
}
}
веб-сервис, как ожидается, много звонков, и я хочу сделать избыточность службы в случае сбоя, поэтому я хочу, чтобы одновременно выполнялось два экземпляра для обработки всех запросов.
1) Каков наилучший способ иметь два приема веб-сервиса, обрабатывающего запросы одновременно ?, с внешним балансировщиком нагрузки или с некоторой магией (я не знаю) внутри akka/akka-http ?
2) Каковы основные параметры, которые я должен настроить, чтобы улучшить производительность?
Hi @Ramon, спасибо за ответ !!!, могу я задать вам еще два вопроса? 1) Если я использую актеров, я теряю контроль над потоком, который предоставляют потоки? 2) где мне нужно вызвать функцию foo? –
@GeorgeC, вы можете ответить на этот вопрос. 1) Я не думаю, что ты потеряешь давление, но я не уверен на 100%. Я не знаю эффектов вызова Route 'onComplete', это может быть преобразовано в' mapAsync' или 'mapAsyncAwait'. 2) Я исправил свой ответ, чтобы сохранить вашу оригинальную функцию 'foo'. Счастливый взлом. –