Tôi có một ứng dụng Scala sử dụng Akka nhận các yêu cầu REST, thực hiện một số hoạt động đối với một cơ sở dữ liệu và trả lời một số thông tin cho khách hàng. Do đó, các hoạt động db của tôi mất một thời gian dài và diễn viên được kích hoạt REST của tôi không thể đáp ứng các yêu cầu mới trong khi chờ đợi, mặc dù tôi có thể chạy nhiều hoạt động đồng thời với DB. Tôi đang sử dụng các chú thích javax.ws.rs cho các phương thức REST-enable trong diễn viên của tôi.Làm cách nào để mở rộng ứng dụng Scala REST sử dụng Akka?
Câu hỏi; cách tốt nhất để cho phép ứng dụng của tôi xử lý một số lượng lớn các yêu cầu đồng thời là gì?
EDIT: Tôi sẽ thêm một số mã mẫu.
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: Đây là những gì tôi nhận được trong nhật ký. Tôi đang gửi ba yêu cầu từ trình duyệt của tôi nhanh như tôi có thể chuyển đổi các tab và nhấn F5, nhưng hạt RS vẫn chờ yêu cầu đầu tiên hoàn thành trước khi xử lý tiếp theo.
[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
Bạn có thể muốn xem xét Apache Bench thay vì nhấn F5 rất nhiều công cụ tuyệt vời để kiểm tra đồng thời. http://httpd.apache.org/docs/2.2/programs/ab.html – cbmeeks