2011-12-25 8 views
4

私たちのシステムは、サーバーとエージェントで構成されています。エージェントは巨大なバイナリファイルを生成しますが、これはサーバに転送する必要があります。考えるファイルジェネレータからサーバー(Java)への巨大なバイナリファイルのHTTP転送を実装する方法は?

  1. をシステムが他のポートを閉じることができるので、転送は、HTTP上でなければならない2年
  2. に10Gに成長する可能性がある、今1Gまでのファイルにも対応しなければなりません。
  3. これはファイル共有システムではなく、エージェントはファイルをサーバーにプッシュするだけで済みます。
  4. エージェントとサーバーの両方がJavaで記述されています。
  5. バイナリファイルに機密情報が含まれている可能性があるため、転送は安全でなければなりません。

私は巨大ファイルを転送で私を助けるために技術やライブラリを探しています。私が知っ話題のいくつかは:1を選択する

  • 圧縮?私たちはgzipまたはdeflateに制限するものではありません.HTTPトラフィックで最も人気があるからです。私たちの仕事にとってより良い結果をもたらす、珍しい圧縮方式があれば、それもそうです。
  • 分割する明らかに、ファイルを複数の並列セッションで分割して転送する必要があります。
  • 背景膨大なファイルを転送するのに時間がかかります。それが解決に影響するかどうか
  • セキュリティ HTTPSは行く方法ですか?あるいは、データの量があれば、別のアプローチをとるべきでしょうか?
  • off-the-shelf私は完全に自分でコード化する(楽しいはずです)が、私の要求を満たす既製のソリューションがあるかどうかという疑問を避けることはできません。

この問題が発生したのは誰ですか?どのように処理されましたか?

ありがとうございました。

EDIT

一部は、転送プロトコルとしてHTTPの選択を質問することができます。同じことは、たとえ同じ企業ネットワーク内にあっても、サーバーとエージェントが互いに離れている可能性があることです。私たちはすでに、顧客が企業ネットワーク内のノードにHTTPポートだけを開いたままにしておくという事実に関連する多くの問題に直面しています。それは私たちに多くの選択肢を残しませんが、HTTPを使用します。 FTPを使用するのは問題ありませんが、HTTP経由でトンネリングする必要があります.FTPのメリットはまだありますか、他の選択肢が有効かどうかという点ではそれは妥協しませんか?私は知らない - アドバイスをしてください。

EDIT2

修正 - HTTPSは常に開いており、時には(常にではない)HTTPは、同様に開いています。しかしそれはそれです。

+0

これは本当に悪い選択です。あなたのデータに最も適した圧縮ソフトウェアを使ってソースを圧縮し、ファイル転送プロトコル/ツールを使用してください(そのうちの何百ものものが利用可能で、暗号化が利用可能なバンチ、パラレル転送キャップ付きのもの) – Mat

+0

私は自分の質問を編集しました。 – mark

+0

FTP over HTTPをトンネリングすると、HTTPのすべての問題が発生し、** FTPのすべての問題が発生します。それはさらに悪いことですが、しないでください。あなたの説明から、大量の機密情報が得られます。これは高い価値があるはずです。あなたの顧客がこのシナリオで安全なファイル転送のためのポートを持っておらず、プレーンテキスト、セッションレス、セキュリティで保護されていないプロトコルのためにポートを開く方が望ましいのであれば、 。 – Mat

答えて

3

ポート80で任意のプロトコルを使用できます.HTTPを使用するのは良い選択ですが、使用する必要はありません。

圧縮どれを選択するか?私たちはgzipまたはdeflateに制限するものではありません.HTTPトラフィックで最も人気があるからです。私たちの仕事にとってより良い結果をもたらす、珍しい圧縮方式があれば、それもそうです。

最適な圧縮率はコンテンツによって異なります。私は単純化のためにデフレータを使用しますが、BZIP2はより良い結果を得ることができます(ライブラリが必要です)

あなたのファイルタイプには、まずそのタイプに特有の圧縮を行うことができます。

分割明らかに、ファイルを複数の並列セッションで分割して転送する必要があります。

これは明らかではありません。並行して、データをダウンロードする(他のユーザがいない場合)。これは望ましくない、あるいは無意味かもしれ利用可能な帯域幅(すなわち、同じ帯域幅の他のユーザーを絞り出し)の多くをつかむことでパフォーマンスを向上させ、巨大なファイルを転送

背景長い時間がかかります。それが解決に影響するかどうか

いつでもダウンロードを再開することができます。

セキュリティHTTPSには方法がありますか?あるいは、データの量があれば、別のアプローチをとるべきでしょうか?

データの量に関係なく、問題はないと思います。

私は完全に自分でコード化する準備ができています(楽しいはずです)が、私の要求を満たす既製のソリューションがあるかどうかという疑問は避けられません。

私は、既存のWebサーバーを使用して、ジョブが完了しているかどうかを確認します。私は上記のすべてを行う無料のWebサーバーがない場合、私は驚くだろう。

ここが選択ですhttp://www.java-sources.net/open-source/web-servers

+0

コンテンツ検査を行うネットワークはどうですか?この場合、カスタムプロトコルをポート80経由で使用すると、誤ったアラームが発生します。 – rit

+0

その場合、HTTPに基づくHTTPSは拒否される可能性がありますが、まったく同じではありません。コンテンツ検査を欺くためには、もっと多くのことをしなければならないかもしれません。 –

+0

あなたのファイルは本当に圧縮可能ですか?データの量があれば、圧縮には膨大な時間がかかります。あなたのファイルがテキストベースであることが分かっていれば、それでも問題ありませんが、もしそうでなければ、気にするべきではありません。 – fge

関連する問題