複雑な計算を行う.NET関数があります。渡されるパラメーターに応じて、関数は次のようになります。
- 実行には数分から数時間かかります
- 計算中にシングルコアを100%使用します
- 数百MBから数GBのメモリが必要です
- 数MBから数GBのデータをディスクに書き込みます
- OutOfMemoryExceptionを含む例外をスローする可能性があります
ディスクに書き込まれるデータの量は、関数のパラメーター化から正確に予測できます。関数のパラメーター化から他のリソース要件を予測する簡単な方法はありません。
この関数をWebサービス経由で公開する必要があります。このサービスは次のようにする必要があります。
- 計算中に問題が発生した場合は、弾力性があり、適切に報告します
- パフォーマンスを大幅に低下させることなく要求を処理するのに十分なリソースがあり、それ以外の場合は要求を適切に拒否するのに十分なリソースがある限り、同時要求を処理できます。
最初のリクエストで進行状況をポーリングできるステータスリソースを返すようにすることで、長期的な性質を処理するつもりです。計算が完了すると、このリソースは、クライアントがダウンロードできる出力データの場所を提供します(おそらくFTP経由で)。
他の要件をどのように処理するのが最善かについては、あまり明確ではありません。電卓のインスタンスを維持し、現在使用されているものを追跡する、ある種の「計算プール」を検討していますが、詳細はわかりません。
同様の状況の経験がある人は何か提案がありますか?ソリューションがWindowsボックスで実行できる限り、すべてのテクノロジオプションを検討できます。