1使用场景1.1网关当用户浏览器访问网页时,在网关上配置压缩,减少数据传输,加快网页打开速度。1.2Mesh内部微服务相互通信时,特别是使用rest协议,即使用http协议进行通信,配置压缩解压可以有效加快数据传输速度,降低网络延迟。这非常有用。比如我们的rpc协议是http,开启压缩可以提高传输效率。2实施2.1网关配置压缩2.1.1示例1cat<ef-ingressgateway-http-filter-compression.yamlapiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:namespace:istio-systemname:apply-tospec:workloadSelector:labels:istio:ingressgatewayconfigPatches:-applyTo:HTTP_FILTERmatch:context:GATEWAYlistener:filterChain:filter:name:envoy.filters.network.http_connection_managersubFilter:name:envoy.filters.http.routerpatch:operation:INSERT_BEFOREvalue:name:envoy.filters.http.compressortyped_config:"@type":type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressorresponse_direction_config:common_config:min_content_length:100content_type:-'text/html'compressor_library:name:text_optimizedtyped_config:"@type":type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzimpemory_level:3window_bits:10compression_level:BEST_COMPRESSIONcompression_strategy:DEFAULT_STRATEGYEOFkubectlapply-fef-ingressgateway-http-filter-compression.yaml-nistio-system配置参数说明:作用于http_filter,type_url固定,response_direction_config配置响应,min_content_length为启用的最小压缩大小,content_type为哪些类型启用压缩。compressor_library压缩库配置,window_bits:窗口位大小,取值9到15,取值越大压缩效果越好,但内存消耗越大,默认为12,会生成4096字节的windowcompression_level压缩级别,会影响压缩速度和压缩尺寸。BEST,高压缩,高延迟;SPEED低压缩,低延迟;DEFAULT优化压缩,将介于BEST和SPEED之间。默认不设置为DEFAULT.mem??ory_level内存级别,从1到9,控制压缩库的内存使用,值越大,使用的内存越多,但速度越快,压缩效果越好。默认值为5。compression_strategy:DEFAULT,FILTERED,HUFFMAN,RLEcontent_type:默认值"application/javascript","application/json","application/xhtml+xml","image/svg+xml","text/css","text/html","text/plain","text/xml"开启压缩前:传输大小为4.6k开启压缩后:content-encoding为gzip,表示开启了gzip压缩,大小从4.6k减少到1.9k2.1.2改进压缩参数cat<ef-ingressgateway-http-filter-compression-2.yamlapiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:namespace:istio-systemname:apply-tospec:workloadSelector:labels:istio:ingressgatewayconfigPatches:-applyTo:HTTP_FILTERmatch:context:GATEWAYlistener:filterChain:filter:name:envoy.filters.network.http_connection_managersubFilter:name:envoy.filters.http.routerpatch:operation:INSERT_BEFOREvalue:name:envoy.filters.http.compressortyped_config:"@type":type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressorresponsese_direction_config:common_config:min_content_length:100content_type:-'text/html'compressor_library:name:text_optimizedtyped_config:"@type":type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzimpemory_level:9window_bits:15compression_level:BEST_COMPRESSION压缩策略:DEFAULT_STRATEGYEOFkubectlapply-fef-ingressgateway-http-filter-compression-2.yaml-nistio-system提供高参数后传数据从1.9k下到1.8k2.1.3最快压缩速度cat<ef-ingressgateway-http-filter-compression-3.yamlapiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:namespace:istio-systemname:apply-tospec:workloadSelector:labels:istio:ingressgatewayconfigPatches:-applyTo:HTTP_FILTERmatch:context:GATEWAYlistener:filterChain:filter:name:envoy.filters.network.http_connection_managersubFilter:name:envoy.filters.http.routerpatch:operation:INSERT_BEFOREvalue:name:envoy.filters.http.compressortyped_config:"@type":type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressorresponse_direction_config:common_config:min_content_length:100content_type:-'text/html'compressor_library:name:text_optimizedtyped_config:"@type":type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzimpemory_level:9window_bits:15compression_level:BEST_SPEEDcompression_strategy:DEFAULT_STRATEGYEOFkubectlapply-fef-ingressgateway-http-filter-compression-3.yaml-nistio-systemBEST_SPEED传输大小从1.8k提升到1.9k2.1.4请求申请-http-filter-compression-4.yamlapiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:namespace:istio-systemname:apply-tospec:workloadSelector:labels:istio:ingressgatewayconfigPatches:-applyTo:HTTP_FILTERmatch:context:GATEWAYlistener:filterChain:过滤器:名称:envoy.filters.network.http_connection_managersubFilter:名称:envoy.filters.http.routerpatch:操作:INSERT_BEFOREvalue:名称:envoy.filters.http.compressortyped_config:“@type”:类型.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressorresponse_direction_config:common_config:min_content_length:100content_type:-'text/html'request_direction_config:common_config:enabled:defaulttypetype_value:trueruntime_key:request_compressor_enabledcompressor_libraryt:immon_config:enabled:defaulttype_value:trueruntime_key:request_compressor_enabledcompressor_libraryt:im“:type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzimpemory_level:9window_bits:15compression_level:BEST_SPEEDcompression_strategy:DEFAULT_STRATEGYEOFkubectlapply-fef-ingressgateway-http-filter-compression-4.yaml-nistiod-压缩配置请求2.1.5禁用响应压缩,仅使用请求压缩cat<ef-ingressgateway-http-filter-compression-5.yamlapiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:namespace:istio-systemname:apply-tospec:workloadSelector:labels:istio:ingressgatewayconfigPatches:-applyTo:HTTP_FILTERmatch:context:GATEWAYlistener:filterChain:filter:name:envoy.filters.network.http_connection_managersubFilter:name:envoy.filters.http.routerpatch:operation:INSERT_BEFOREvalue:name:envoy.filters.http.compressortyped_config:"@type":type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressorresponse_direction_config:common_config:enabled:default_value:falseruntime_key:response_compressor_enabledmin_content_length:100content_type:-'text/html'request_direction_config:common_config:enabled:default_value:trueruntime_key:request_compressor_enabledcompressor_library:name:text_optimizedtyped_config:"@type":type.googleapis.com/envoy.extensions。compression.gzip.compressor.v3.Gzimpemory_level:9window_bits:15compression_level:BEST_SPEEDcompression_strategy:DEFAULT_STRATEGYEOFkubectlapply-fef-ingressgateway-http-filter-compression-5.yaml-nistio-system2.2mesh内部配置压缩<猫间启动EOF>ef-ratings-http-filter-compression.yamlapi版本:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:name:ratingsspec:workloadSelector:labels:app:ratingsconfigPatches:-applyTo:HTTP_FILTERmatch:context:SIDECAR_INBOUNDlistener:filterChain:filter:name:envoy.filters.network.http_connection_managersubFilter:name:envoy.filters.http.routerpatch:operation:INSERT_BEFOREvalue:name:envoy.filters.http.compressortyped_config:"@type":type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressorresponse_direction_config:common_config:enabled:default_value:trueruntime_key:response_compressor_enabledmin_content_length:10content_type:-'application/json'request_direction_config:common_config:enabled:default_value:trueruntime_key:request_compressor_enabledcompressor_library:name:text_optimizedtyped_config:"@type":type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzimpemory_level:9window_bits:12compression_level:BEST_SPEEDcompression_strategy:DEFAULT-FkEOlyEOYEOSTRATEG-ratings-http-filter-compression.yaml-nistioraings启动了压缩评论启用解压猫<ef-reviews-http-filter-compression.yamlapiVersion:networking.istio.io/v1alpha3kind:EnvoyFiltermetadata:name:reviewsspec:workloadSelector:labels:app:reviewsconfigPatches:-applyTo:HTTP_FILTERmatch:context:SIDECAR_OUTBOUNDlistener:filterChain:filter:name:envoy.filters.network.http_connection_managersubFilter:name:envoy.filters.http.routerpatch:operation:INSERT_BEFOREvalue:name:envoy.filters.http.decompressortyped_config:"@type":type.googleapis。com/envoy.extensions.filters.http.decompressor.v3.Decompressorresponse_direction_config:common_config:enabled:default_value:trueruntime_key:response_decompressor_enabledrequest_direction_config:common_config:enabled:default_value:falseruntime_key:request_decompressor_enableddecompressor_library:name:text_optimizedtyped_config:"@type".comtype.googleapis/envoy.extensions.compression.gzip.decompressor.v3.Gzipchunk_size:4096window_bits:15EOFkubectlapply-fef-reviews-http-filter-compression.yaml-nistiowindow_bits窗口位大小,取值9到15,解压后的窗口位大小需要大于等于压缩后的窗口位大小,默认值为15chunk_sizeblocksize,用于输出缓存,默认值为4096,值必须在范围[4096,65536]内转载本文请联系k8s实战公众号。