我有一個使用Akka的Scala應用程序,它接收REST請求,對數據庫進行一些操作,並向客戶端返回一些信息。實際上,我的數據庫操作需要很長時間,而且我的REST支持的參與者無法同時響應新請求,即使我可以同時對數據庫同時運行大量操作。我在演員中使用javax.ws.rs註釋來啓用REST方法。如何擴展使用Akka的Scala REST應用程序?
這個問題;使我的應用程序能夠處理大量併發請求的最佳方式是什麼?
編輯:我會添加一些示例代碼。
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 bean在處理下一個請求之前仍然會等待第一個請求完成。
[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 Bench而不是按F5這麼多用於併發測試的好工具。 http://httpd.apache.org/docs/2.2/programs/ab.html – cbmeeks 2012-12-14 04:28:37