2010-12-17 10 views
1

ユーザーがイメージファイルをアップロードできるJava Webアプリケーションがあると仮定すると、Tomcatサーバーのファイルシステムにそれらのイメージが格納され、さらにリクエストすると静的リソースとして提供されます。このアプリケーションは、ロードバランサとしてmod_jkを持つApacheサーバーの背後にあるTomcatサーバーの大規模なクラスタにスケールアウトされ、展開される必要があります。静的リソースが一貫していないTomcatクラスタ

アップロードされたイメージはファイルシステム上にあるため、アップロードイベントが発生していない残りのTomcatサーバーでは利用できません。 1人のユーザが来たら、画像をアップロードし、しばらくして画像を再度要求すると、彼の要求はラウンドロビンの負荷分散ポリシーのために残念ながら別のサーバにルーティングされる可能性があります。

この種の問題に対処する従来の方法はありますか?バックエンドデータベースを利用してアップロードシステムを再設計する必要がありますか?

答えて

1

共有NFSドライブを使用してそこにイメージをアップロードすることができない理由はありますか?もちろん、命名の衝突はないと仮定します。

+0

これは不十分なレガシークラスタシステムです。名前の衝突がたくさんあると思います。とにかく、nfsは面白い音を出します。試してみましょう。 –

+0

ハッシュマップのようなことができます。ハッシュマップの各項目にはほとんど一意のハッシュキーがありますが、衝突の場合は別のカウンタ/ IDで一意性が保証されます。 – mindas

0

片方向は共有ファイルシステムです。もちろん、それはいつも可能ではありません。もう1つの方法は、データベース内のすべてを保持することです。同期のために、これは私が提案する方法です。 内容については、jackrabbitの使用をお勧めします。クラスタリングとジャラビットの良い紹介はここにあります:http://wiki.apache.org/jackrabbit/Clustering

関連する問題