Pregunta

Necesito comprimir partes del tráfico de red de nuestra aplicación para mejorar el rendimiento.Supongo que esto significa que debo mantenerme alejado de algunos de los algoritmos más nuevos como bzip2, que creo que es más lento.

¿Fue útil?

Solución

Puedes usar desinflador/inflador que está integrado en el JDK.También existen GZIPInputStream y GZIPOutputStream, pero realmente depende de su uso exacto.

Editar:

Al leer más comentarios, parece que el tráfico de la red es HTTP.Dependiendo del servidor, probablemente tenga soporte para compresión (especialmente con deflate/gzip).El problema entonces recae en el cliente.Si el cliente es un navegador, probablemente ya lo admita.Si su cliente es un cliente de servicios web o un cliente http consulte la documentación de ese paquete para ver si es compatible.

Parece que jakarta-commons httpclient puede requerir que realices la compresión manualmente.Para habilitar esto en el lado del cliente, deberá hacer algo como

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

Otros consejos

Si el tráfico de la red pasa por HTTP, la mayoría de los distintos servidores web/contenedores de servlets admiten el compresión negociada, por ejemplo, mod_deflate para Apache.

Su algoritmo de compresión depende de lo que intenta optimizar y de cuánto ancho de banda tiene disponible.

Si estás en una LAN gigibit, casi cualquier algoritmo de compresión ralentizará un poco tu programa.Si se conecta a través de una WAN o Internet, puede darse el lujo de hacer un poco más de compresión.Si se conectó a un acceso telefónico, debe comprimir tanto como sea posible.

Si se trata de una WAN, puede encontrar soluciones de hardware como cauce del río son más efectivos, ya que funcionan en una variedad de tráfico y no requieren ningún cambio en el software.

Tengo un caso de prueba que muestra la diferencia de compresión relativa entre Desinflar, Filtrar, BZip2 y lzma.Simplemente conecte una muestra de sus datos y pruebe la sincronización entre dos máquinas.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top