パフォーマンスのために、アプリケーションのネットワーク トラフィックの一部を圧縮する必要があります。これは、bzip2 のような新しいアルゴリズムを避ける必要があることを意味していると思います。bzip2 の方が遅いと聞いたことがあります。
3 に答える
JDKに組み込まれているDeflater / Inflaterを利用できます。GZIPInputStream と GZIPOutputStream もありますが、実際には使用方法によって異なります。
編集:
さらにコメントを読むと、ネットワーク トラフィックは HTTP のようです。サーバーによっては、圧縮 (特に deflate/gzip を使用) がサポートされている可能性があります。問題はクライアントにあります。クライアントがブラウザーの場合、おそらく既にサポートされています。クライアントが Web サービス クライアントまたはhttp クライアントである場合は、そのパッケージのドキュメントをチェックして、サポートされているかどうかを確認してください。
Jakarta-commons httpclient では、手動で圧縮する必要があるようです。クライアント側でこれを有効にするには、次のようにする必要があります
.addRequestHeader("Accept-Encoding","gzip,deflate");
ネットワーク トラフィックが HTTP を経由している場合、Apache の mod_deflate など、さまざまな Web サーバー/サーブレット コンテナーのほとんどがネゴシエートされた圧縮をサポートしています。
圧縮アルゴリズムは、何を最適化しようとしているか、および使用可能な帯域幅によって異なります。
ギガビット LAN を使用している場合、ほとんどすべての圧縮アルゴリズムがプログラムの速度を少し低下させます。WAN またはインターネット経由で接続している場合は、もう少し圧縮する余裕があります。ダイヤルアップに接続している場合は、可能な限り圧縮する必要があります。
これが WAN の場合、Riverbed のようなハードウェア ソリューションがより効果的であることに気付くかもしれません。なぜなら、それらはさまざまなトラフィックで機能し、ソフトウェアを変更する必要がないからです。
Deflate、Filtered、BZip2、および lzma間の相対的な圧縮の違いを示すテスト ケースがあります。データのサンプルをプラグインして、2 台のマシン間のタイミングをテストするだけです。