2011-07-21 6 views
1

プロジェクトには主要なDBサーバーがあり、別の場所にインストールされた他のサーバーはそれぞれ独自のローカルデータベースを維持します。すべてのシステムがローカルデータベースをメジャーDB上のどのバージョンにも更新できるようにする必要があります。すべてのサーバーはJava環境を実行します。Javaサーバー間で大きなファイルを転送する良い方法を見つける

シンプルなウェブダウンロードページ、ウェブサービス、FTP、ソケットなど、ファイルを転送する方法はたくさんあるようです。このような状況に適していると思いますか?

一般的な手順は以下のようになります。

1、クライアントがサーバーへのバージョンの文字列を送信します。
2、サーバーはパッチを生成して返します。
(パッチ多分あまりにも巨大なので、それは部品に分離する必要があります)

はと私は考えていることは選択肢の多くは実際にあります手順2.
の内側にあります。

1、私は最初にフェッチする行を数え、分割する必要のある部分の数を計算する必要があります。

そして、私はちょうどクライアントの部分またはリンクのリストを返すべきですか?そして、クライアントは、Webリクエストに基づいて接続するか

2、サーバーデータベースから必要なレコードを取り出し、部分的に取り出し、制限付きの行を取得し、Javaとして返すことができます。 List、ファイルをすぐにシリアル化して、次の部分のメモリを空にして、ファイルのフォルダを取得します。そして私は、ファイルを1つに圧縮して送り返し、クライアントが2度目の要求をしないようにします。

同じバージョンをリクエストしたときに、生成されたパッチファイルを他のクライアント用に保持することができます。

私はすべての方法がうまくいくと思いますが、どちらが良いと思いますか?それとも良い方法を知っていますか?
共有しましょう。

答えて

0

最後に、私が選んだ方法について話しています。

私は、着信要求を確認するアクションを主サーバーに委ねました。シリアライズされたデータを準備し、それらを1つのzipファイルにパッケージ化します。 zipファイルを応答としてInputStream内の要求元のマシンに送り返します。

次に、要求元のマシンがファイルを解凍してデシリアライズして使用します。

3

Nettyを使用して、サーバーからクライアントへの大きなファイル転送を試すことができます。

Nettyのホームページには、かなり良いですexampleウェブ経由で大きなファイルを送信する方法。

関連する問題