2012-04-06 3 views
0

私はリアルタイムアプリケーションに近いアプリケーションを開発中です。100以上のユーザがこのアプリケーションに接続します。マルチユーザ環境用の単一のリソースへのアクセス

私の問題は、バイナリリソース、つまりmp3ファイルがあることです。私は各ユーザーごとに別々のユーザーインスタンスを作成していますが、アプリケーションは正常に動作しますが、問題はファイルが5MBを超えているため、100人のユーザーに対して個別のインスタンスを作成すると500MBとなり、 。

私はこのリソースをグローバル(静的)に保つことを考えていますが、これはマルチユーザー環境アプリケーションであり、すべてのユーザーがリソースに継続的にアクセスするため、問題があると思います私はすべてのユーザーのためにこのリソースをグローバルに保ちます。

あなたはどう思いますか?あなたが他のアイディアを持っているならば、Plz分け前。

ありがとうございます。

+1

あなたはリソースを書きますか、それとも読み出しのみですか?また、例えば10人のユーザーがそれぞれ10人のコピーを共有していると考えてもよいでしょう。 –

+0

ユーザーがファイルを読み取っているだけの場合は、読み込まれたファイルオブジェクトを参照する(カウントをロックするかアトミックを使用する)ことができますか? –

+0

返信いただきありがとうございます...リソースは読み取り専用です –

答えて

0

パフォーマンスとメモリの使用に関しては、トレードオフが必要です。

すべてのユーザーに同じバイナリリソースが提供されている場合は、そのリソースをグローバルに保つ方がよい(ユーザーがリソースにアクセスするためのアクセス制御がないと仮定して)。しかし、すべてのバイナリリソースをメモリに連続して格納する代わりに、リソースをキャッシュするためのメカニズムを実行することができます。

ユーザーが初めて特定のリソースにアクセスすると、そのリソースをメモリにロードできます。設定された間隔の後にどのユーザーからもアクセスされない場合は、メモリから削除することができます。

関連する問題