2

アップロードプロセス中にTomcatが失敗するとどうなりますか。単に50倍のエラーをスローしますか?サーバー障害を適切に処理し、残りの要求を別のサーバーに転送することは可能ですか?

4

2 に答える 2

3

特にTomcatについてはわかりませんが、これはTCP接続です。アップロードが失敗すると、TCP 接続が切断されます。クライアントはアップロードを中止します。

ファイル内の特定の位置でアップロードを再開できる再試行機能がクライアントにある場合は、新しいサーバーで再開できます。一般に、これは Web クライアントの一般的な機能ではありません。大きなファイルをアップロードする多くのサイトには、アップロードの再開を統合するフラッシュ クライアントがあります。

これをより透過的に行いたい場合は、TCP ストリームを監視し、TCP 状態を維持する Web フロントエンドを使用できます。障害が発生した場合は、その状態を新しいサーバーに転送し、ストリームを渡して、TCP ストリームが最初から壊れていないかのようにアップロードを続行できます。

ただし、これは些細なことではなく、新しい障害点をもたらします。主な利点は、クライアントが接続を切断しない限り、どのクライアントでも機能することです (クライアント側で壊れたダウンロードを再開することはできず、サーバーの障害のみを解決できます)。

-アダム

于 2009-04-07T20:18:06.167 に答える
0

ある種のロードバランサー/フェイルオーバーが必要なようです。基本的に、複数のコンピューターのフロントエンドとして機能するマシンです。外部からのトラフィックをリッスンし、クラスター内のノードに転送(計算)します。1つのノードに障害が発生した場合、そのノードはトラフィックを別のコンピューターに再ルーティングする方法を知っています。したがって、これには、すべてのノードが互いに同期している必要があります。これにより、TCP送信などのトランザクションを、ビートをスキップすることなく続行できます。

これは、ソフトウェアではなくハードウェアで最も一般的に実装されます。いずれにせよ、実装するのはそれほど簡単ではありません。

于 2009-04-07T20:39:23.603 に答える