質問

多数のデータベースクエリ(MongoDBに)を実行し、それらのデータベースクエリによって返されたレコードで不定量の処理を行うWebサービスがあります。各Web要求は、これらの要求の約15〜45を実行する必要があります。これにより、各クエリ +処理には約20msかかるため、容認できないページ応答時間が発生します。キャッシュミス率が高く、データはできるだけ新鮮である必要があるため、キャッシュは機能しません。

Scala + Akkaと俳優を使用してクラスの実行と処理を並列化することを計画していましたが、サーブレットコンテナ内でスレッドを作成することは落胆することを知っています。 ScalaのWeb要求内でスレッド/並列化を行うための推奨方法は何ですか?

役に立ちましたか?

解決

Akkaの先物をこれに使用できない理由がわかりません(2.0スナップショットを使用しています)。

import akka.dispatch.Future
Future.sequence(1 to 45 map { i =>
  Future {
    ... make database query i ...
  }
}) onComplete { future =>
  future.result.map { resultList =>
    // resultList.foldLeft...
    // resultList.map...
    // resultList.foreach...
    // resultList.whatever...
  }
}

(そして、確かにあなたのニーズに合わせてアッカの先物に対処する方法が複数あります。その例はあなたが望むものに理想的ではないかもしれません)

詳細については、優れたAkkaドキュメントをご覧ください。 Akka 1.2R6将来のドキュメント

上記のコメントで述べたように、私は使用しました Akka HTTPモジュール 過去に高度にスケーラブルで信頼性の高いアプリを構築するため、それらはすべて俳優 /未来ベースです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top