ASMCompressor es una definición de recurso personalizado (CRD) que configura la compresión HTTP para la comunicación entre servicios y el tráfico de gateway en Service Mesh (ASM). Es compatible con los algoritmos Gzip y Brotli.
Cómo funciona la compresión
Cuando aplica un recurso ASMCompressor, ASM inyecta un filtro de compresión en el proxy sidecar de Envoy de las cargas de trabajo seleccionadas. Este filtro inspecciona los encabezados de solicitud y respuesta para determinar si se comprime el contenido.
La compresión se aplica cuando se cumplen todas las condiciones siguientes:
El tipo de contenido coincide con uno de los tipos MIME configurados.
La longitud del contenido alcanza el umbral mínimo.
No existe ningún encabezado
Content-Encoding.
La compresión de respuestas está habilitada de forma predeterminada. La compresión de solicitudes está deshabilitada de forma predeterminada y debe configurarse explícitamente mediante request_direction_config.
Ejemplo
A continuación se muestra un recurso ASMCompressor que habilita la compresión Gzip en las respuestas de las cargas de trabajo etiquetadas con app: httpbin, en el puerto de servicio 8080:
apiVersion: istio.alibabacloud.com/v1
kind: ASMCompressor
metadata:
name: httpbin-compressor
namespace: default
spec:
workloadSelector:
app: httpbin
portNumber: 8080
compressor_library:
gzip:
compression_level: DEFAULT
window_bits: 12
memory_level: 5
response_direction_config:
common_config:
min_content_length: 256
content_type:
- application/json
- text/html
- text/plain
disable_on_etag_header: true
Campos de ASMCompressor
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
map\ |
Sí |
Etiquetas que seleccionan los pods donde se aplica la compresión. El alcance de las etiquetas se limita al namespace del recurso ASMCompressor. Para obtener más información, consulte WorkloadSelector. |
-- |
|
|
bool |
No |
Establezca este valor en |
|
|
|
int |
Sí |
Puerto de servicio en el que se aplica la compresión. En los gateways, corresponde al puerto de servicio del gateway. |
-- |
|
|
No |
Configuración del algoritmo de compresión para Gzip o Brotli. |
-- |
|
|
|
No |
Comportamiento de compresión para las solicitudes. |
-- |
|
|
|
No |
Comportamiento de compresión para las respuestas. |
-- |
|
|
|
No |
Anulaciones de compresión a nivel de ruta. Compatible desde ASM V1.21. |
-- |
Campos de CompressorLibrary
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
No |
Configuración de compresión Gzip. |
-- |
|
|
|
No |
Configuración de compresión Brotli. |
-- |
Campos de GzipCompressor
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
int |
No |
Tamaño de ventana para el búfer de compresión. Valores válidos: de 9 a 15. Los valores más altos mejoran la relación de compresión, pero aumentan el uso de memoria. |
|
|
|
string |
No |
Equilibrio entre la relación de compresión y la velocidad. Valores válidos: |
|
|
|
int |
No |
Memoria asignada al estado interno de compresión. Valores válidos: de 1 a 9. Los valores más altos aceleran la compresión y mejoran la calidad del resultado, pero incrementan el uso de memoria. |
|
|
|
string |
No |
Estrategia de compresión de zlib. Elija una opción según las características de los datos que se van a comprimir. Para obtener más información, consulte Estrategias de compresión. |
|
Estrategias de compresión
|
Valor |
Descripción |
|
|
zlib la selecciona automáticamente según las características de los datos de entrada. Adecuada para la mayoría de los casos de uso. |
|
|
Optimizada para datos preprocesados por un filtro. Se usa habitualmente en la compresión de múltiples pasadas para aumentar la relación de compresión. |
|
|
Utiliza únicamente la codificación Huffman, sin el algoritmo LZ77. Es la estrategia más rápida, aunque ofrece la menor relación de compresión. |
|
|
Codificación por longitud de ejecución (run-length encoding). Ideal para datos con secuencias largas de bytes repetidos. |
|
|
Emplea un diccionario de compresión fijo y predefinido. Útil cuando los datos siguen patrones conocidos y predecibles. |
Campos de BrotliCompressor
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
int |
No |
Tamaño de ventana para el búfer de compresión. Valores válidos: de 10 a 24. Los valores más altos mejoran la relación de compresión, pero aumentan el uso de memoria. |
|
|
|
int |
No |
Nivel de calidad de la compresión. Valores válidos: de 0 a 11. Los valores más altos generan resultados más pequeños, pero tardan más en comprimirse. |
|
Campos de RequestDirectionConfig
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
No |
Comportamiento del filtro para la compresión de solicitudes. |
-- |
Campos de ResponseDirectionConfig
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
No |
Comportamiento del filtro para la compresión de respuestas. |
-- |
|
|
|
bool |
No |
Si el valor es |
|
|
|
bool |
No |
Si el valor es |
|
Campos de CommonConfig
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
int |
No |
Tamaño mínimo del cuerpo de respuesta, en bytes, para activar la compresión. Las respuestas muy pequeñas podrían no beneficiarse de la compresión. En Gzip, una mayor relación de compresión implica un costo de CPU más alto. Por lo tanto, pruebe distintos umbrales para equilibrar el rendimiento y el ancho de banda. |
-- |
|
|
string[] |
No |
Tipos MIME aptos para la compresión. Solo se comprimen las respuestas cuyo |
Consulte a continuación |
Valores predeterminados de content_type:
application/javascript, application/json, application/xhtml+xml, image/svg+xml, text/css, text/html, text/plain, text/xml
Campos de ASMCompressorPerRouteConfig
La configuración por ruta anula los ajustes globales de compresión en rutas específicas. Por ejemplo, puede deshabilitar la compresión en una ruta de comprobación de estado y mantenerla habilitada para el resto del tráfico.
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
Sí |
Selecciona la ruta a la que se aplica esta anulación. |
-- |
|
|
|
bool |
Sí |
Establezca este valor en |
|
Campos de RouteConfigurationMatch
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
uint32 |
No |
Coincide con un puerto de servicio específico o con un puerto de servidor concreto en el Gateway. Si se omite, coinciden todos los puertos. |
-- |
|
|
string |
No |
Coincide según el |
-- |
|
|
string |
No |
Gateway con el que se busca coincidencia, en formato |
-- |
|
|
No |
Coincide con un host virtual específico. |
-- |
|
|
|
string |
No |
Nombre de la configuración de ruta de Envoy con la que se busca coincidencia. Requiere conocer la configuración subyacente de Envoy. |
-- |
Campos de CommonVirtualHostMatch
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
string |
No |
Nombre del host virtual generado por el plano de control, en formato |
-- |
|
|
No |
Coincide con una ruta específica dentro del host virtual. |
-- |
Campos de CommonRouteMatch
|
Campo |
Tipo |
Obligatorio |
Descripción |
Valor predeterminado |
|
|
string |
No |
Nombre de la ruta con la que se busca coincidencia. Las rutas generadas de forma predeterminada se denominan |
-- |
|
|
string |
No |
Coincide con rutas según el tipo de acción. Valores válidos: |
|