Question

Je dois compresser des portions du trafic réseau de notre application pour améliorer les performances. Je suppose que cela signifie que je dois rester à l’écart des algorithmes les plus récents tels que bzip2, que je pense avoir entendu est plus lent.

Était-ce utile?

La solution

Vous pouvez utiliser Déflater / Inflater , qui est construit dans le JDK. Il existe également GZIPInputStream et GZIPOutputStream, mais cela dépend vraiment de votre utilisation exacte.

Modifier:

En lisant d'autres commentaires, il semble que le réseau soit en HTTP. Selon le serveur, la compression est probablement prise en charge (en particulier avec deflate / gzip). Le problème devient alors sur le client. Si le client est un navigateur, il le prend probablement déjà en charge. Si votre client est un client de services Web ou un client http , consultez la documentation de ce package. pour voir s'il est supporté.

Il semble que jakarta-commons httpclient puisse vous demander de faire la compression manuellement. Pour l'activer du côté client, vous devrez faire quelque chose comme

.
.addRequestHeader("Accept-Encoding","gzip,deflate");

Autres conseils

Si le trafic réseau passe par HTTP, la plupart des divers serveurs Web / conteneurs de servlets prennent en charge la compression négociée, par exemple mod_deflate pour Apache.

Votre algorithme de compression dépend de ce que vous essayez d'optimiser et de la bande passante disponible.

Si vous utilisez un réseau local gigibit, presque tous les algorithmes de compression ralentiront légèrement votre programme. Si vous vous connectez via un réseau WAN ou Internet, vous pouvez vous permettre de faire un peu plus de compression. Si vous êtes connecté à un accès commuté, vous devez compresser autant que possible.

S'il s'agit d'un réseau étendu, vous pouvez trouver des solutions matérielles telles que les Riverbed sont plus efficaces, car elles fonctionnent une gamme de trafic, et ne nécessite aucune modification du logiciel.

J'ai un scénario de test indiquant la différence de compression relative entre Deflate, Filtered, BZip2 et lzma . Il suffit de brancher un échantillon de vos données et de tester la synchronisation entre deux machines.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top