成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Istio實現非侵入壓縮,微服務之間如何實現壓縮

開發 架構
微服務相互通信時,特別是用了rest協議,即用http協議通信,配置壓縮和解壓,可以有效加快數據傳輸速度,減少網路延遲

[[442125]]

1使用場景

1.1gateway網關

用戶瀏覽器訪問網頁時,在gateway網關配置壓縮,減少傳輸數據,加快網頁打開速度。

1.2mesh內部

微服務相互通信時,特別是用了rest協議,即用http協議通信,配置壓縮和解壓,可以有效加快數據傳輸速度,減少網路延遲

這個很有用,比如如果我們的rpc協議是http,啟用壓縮就可以提高傳輸效率。

2實操

2.1網關配置壓縮

2.1.1示例1

  1. cat << EOF > ef-ingressgateway-http-filter-compression.yaml  
  2. apiVersion: networking.istio.io/v1alpha3 
  3. kind: EnvoyFilter 
  4. metadata: 
  5.   namespace: istio-system 
  6.   name: apply-to 
  7. spec: 
  8.   workloadSelector: 
  9.     labels: 
  10.       istio: ingressgateway 
  11.   configPatches: 
  12.     - applyTo: HTTP_FILTER 
  13.       match: 
  14.         context: GATEWAY 
  15.         listener: 
  16.           filterChain: 
  17.             filter: 
  18.               name: envoy.filters.network.http_connection_manager 
  19.               subFilter: 
  20.                 name: envoy.filters.http.router 
  21.       patch: 
  22.         operation: INSERT_BEFORE 
  23.         value: 
  24.           name: envoy.filters.http.compressor 
  25.           typed_config: 
  26.             "@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor 
  27.             response_direction_config: 
  28.               common_config: 
  29.                 min_content_length: 100 
  30.                 content_type: 
  31.                 - 'text/html' 
  32.             compressor_library: 
  33.               name: text_optimized 
  34.               typed_config: 
  35.                 "@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip 
  36.                 memory_level: 3 
  37.                 window_bits: 10 
  38.                 compression_level: BEST_COMPRESSION 
  39.                 compression_strategy: DEFAULT_STRATEGY 
  40. EOF 
  41.  
  42. kubectl apply -f ef-ingressgateway-http-filter-compression.yaml  -n istio-system 

配置參數說明:

作用在http_filter上,type_url是固定的。response_direction_config對響應做配置,min_content_length最小啟用壓縮大小,content_type對哪些類型啟用壓縮。compressor_library壓縮庫配置,

window_bits:

窗口位大小,值從9到15,大的值會有更好的壓縮,但內存消耗更大,默認是12,將產生4096字節窗口

compression_level

壓縮級別,將影響壓縮速度和壓縮大小。BEST,高壓縮,高延遲;SPEED低壓縮,低延遲;DEFAULT優化的壓縮,將介于BEST和SPEED之間。默認沒設置是DEFAULT.

memory_level

內存級別,從1到9,控制壓縮庫內存的使用量,值越高內存用的多,但是更快,壓縮結果更好。默認值是5.

compression_strategy:

DEFAULT , FILTERED , HUFFMAN , RLE

content_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.9k

2.1.2提高壓縮參數

  1. cat << EOF > ef-ingressgateway-http-filter-compression-2.yaml  
  2. apiVersion: networking.istio.io/v1alpha3 
  3. kind: EnvoyFilter 
  4. metadata: 
  5.   namespace: istio-system 
  6.   name: apply-to 
  7. spec: 
  8.   workloadSelector: 
  9.     labels: 
  10.       istio: ingressgateway 
  11.   configPatches: 
  12.     - applyTo: HTTP_FILTER 
  13.       match: 
  14.         context: GATEWAY 
  15.         listener: 
  16.           filterChain: 
  17.             filter: 
  18.               name: envoy.filters.network.http_connection_manager 
  19.               subFilter: 
  20.                 name: envoy.filters.http.router 
  21.       patch: 
  22.         operation: INSERT_BEFORE 
  23.         value: 
  24.           name: envoy.filters.http.compressor 
  25.           typed_config: 
  26.             "@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor 
  27.             response_direction_config: 
  28.               common_config: 
  29.                 min_content_length: 100 
  30.                 content_type: 
  31.                 - 'text/html' 
  32.             compressor_library: 
  33.               name: text_optimized 
  34.               typed_config: 
  35.                 "@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip 
  36.                 memory_level: 9 
  37.                 window_bits: 15 
  38.                 compression_level: BEST_COMPRESSION 
  39.                 compression_strategy: DEFAULT_STRATEGY 
  40. EOF 
  41.  
  42. kubectl apply -f ef-ingressgateway-http-filter-compression-2.yaml  -n istio-system 

提高參數后傳輸數據從1.9k下降到1.8k

2.1.3最快壓縮速度

  1. cat << EOF > ef-ingressgateway-http-filter-compression-3.yaml  
  2. apiVersion: networking.istio.io/v1alpha3 
  3. kind: EnvoyFilter 
  4. metadata: 
  5.   namespace: istio-system 
  6.   name: apply-to 
  7. spec: 
  8.   workloadSelector: 
  9.     labels: 
  10.       istio: ingressgateway 
  11.   configPatches: 
  12.     - applyTo: HTTP_FILTER 
  13.       match: 
  14.         context: GATEWAY 
  15.         listener: 
  16.           filterChain: 
  17.             filter: 
  18.               name: envoy.filters.network.http_connection_manager 
  19.               subFilter: 
  20.                 name: envoy.filters.http.router 
  21.       patch: 
  22.         operation: INSERT_BEFORE 
  23.         value: 
  24.           name: envoy.filters.http.compressor 
  25.           typed_config: 
  26.             "@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor 
  27.             response_direction_config: 
  28.               common_config: 
  29.                 min_content_length: 100 
  30.                 content_type: 
  31.                 - 'text/html' 
  32.             compressor_library: 
  33.               name: text_optimized 
  34.               typed_config: 
  35.                 "@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip 
  36.                 memory_level: 9 
  37.                 window_bits: 15 
  38.                 compression_level: BEST_SPEED 
  39.                 compression_strategy: DEFAULT_STRATEGY 
  40. EOF 
  41.  
  42. kubectl apply -f ef-ingressgateway-http-filter-compression-3.yaml  -n istio-system 

BEST_SPEED傳輸大小從1.8k提升到1.9k

2.1.4請求啟用壓縮

  1. cat << EOF > ef-ingressgateway-http-filter-compression-4.yaml  
  2. apiVersion: networking.istio.io/v1alpha3 
  3. kind: EnvoyFilter 
  4. metadata: 
  5.   namespace: istio-system 
  6.   name: apply-to 
  7. spec: 
  8.   workloadSelector: 
  9.     labels: 
  10.       istio: ingressgateway 
  11.   configPatches: 
  12.     - applyTo: HTTP_FILTER 
  13.       match: 
  14.         context: GATEWAY 
  15.         listener: 
  16.           filterChain: 
  17.             filter: 
  18.               name: envoy.filters.network.http_connection_manager 
  19.               subFilter: 
  20.                 name: envoy.filters.http.router 
  21.       patch: 
  22.         operation: INSERT_BEFORE 
  23.         value: 
  24.           name: envoy.filters.http.compressor 
  25.           typed_config: 
  26.             "@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor 
  27.             response_direction_config: 
  28.               common_config: 
  29.                 min_content_length: 100 
  30.                 content_type: 
  31.                 - 'text/html' 
  32.             request_direction_config: 
  33.               common_config: 
  34.                 enabled: 
  35.                   default_value: true 
  36.                   runtime_key: request_compressor_enabled 
  37.             compressor_library: 
  38.               name: text_optimized 
  39.               typed_config: 
  40.                 "@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip 
  41.                 memory_level: 9 
  42.                 window_bits: 15 
  43.                 compression_level: BEST_SPEED 
  44.                 compression_strategy: DEFAULT_STRATEGY 
  45. EOF 
  46.  
  47. kubectl apply -f ef-ingressgateway-http-filter-compression-4.yaml  -n istio-system 

request_direction_config配置請求壓縮

2.1.5禁用響應壓縮,只用請求壓縮

  1. cat << EOF > ef-ingressgateway-http-filter-compression-5.yaml  
  2. apiVersion: networking.istio.io/v1alpha3 
  3. kind: EnvoyFilter 
  4. metadata: 
  5.   namespace: istio-system 
  6.   name: apply-to 
  7. spec: 
  8.   workloadSelector: 
  9.     labels: 
  10.       istio: ingressgateway 
  11.   configPatches: 
  12.     - applyTo: HTTP_FILTER 
  13.       match: 
  14.         context: GATEWAY 
  15.         listener: 
  16.           filterChain: 
  17.             filter: 
  18.               name: envoy.filters.network.http_connection_manager 
  19.               subFilter: 
  20.                 name: envoy.filters.http.router 
  21.       patch: 
  22.         operation: INSERT_BEFORE 
  23.         value: 
  24.           name: envoy.filters.http.compressor 
  25.           typed_config: 
  26.             "@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor 
  27.             response_direction_config: 
  28.               common_config: 
  29.                 enabled: 
  30.                   default_value: false 
  31.                   runtime_key: response_compressor_enabled 
  32.                 min_content_length: 100 
  33.                 content_type: 
  34.                 - 'text/html' 
  35.             request_direction_config: 
  36.               common_config: 
  37.                 enabled: 
  38.                   default_value: true 
  39.                   runtime_key: request_compressor_enabled 
  40.             compressor_library: 
  41.               name: text_optimized 
  42.               typed_config: 
  43.                 "@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip 
  44.                 memory_level: 9 
  45.                 window_bits: 15 
  46.                 compression_level: BEST_SPEED 
  47.                 compression_strategy: DEFAULT_STRATEGY 
  48. EOF 
  49.  
  50. kubectl apply -f ef-ingressgateway-http-filter-compression-5.yaml  -n istio-system 

2.2mesh內部配置壓縮

reviews,ratings之間啟用壓縮

  1. cat << EOF > ef-ratings-http-filter-compression.yaml  
  2. apiVersion: networking.istio.io/v1alpha3 
  3. kind: EnvoyFilter 
  4. metadata: 
  5.   name: ratings 
  6. spec: 
  7.   workloadSelector: 
  8.     labels: 
  9.       app: ratings 
  10.   configPatches: 
  11.     - applyTo: HTTP_FILTER 
  12.       match: 
  13.         context: SIDECAR_INBOUND 
  14.         listener: 
  15.           filterChain: 
  16.             filter: 
  17.               name: envoy.filters.network.http_connection_manager 
  18.               subFilter: 
  19.                 name: envoy.filters.http.router 
  20.       patch: 
  21.         operation: INSERT_BEFORE 
  22.         value: 
  23.           name: envoy.filters.http.compressor 
  24.           typed_config: 
  25.             "@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor 
  26.             response_direction_config: 
  27.               common_config: 
  28.                 enabled: 
  29.                   default_value: true 
  30.                   runtime_key: response_compressor_enabled 
  31.                 min_content_length: 10 
  32.                 content_type: 
  33.                 - 'application/json' 
  34.             request_direction_config: 
  35.               common_config: 
  36.                 enabled: 
  37.                   default_value: true 
  38.                   runtime_key: request_compressor_enabled 
  39.             compressor_library: 
  40.               name: text_optimized 
  41.               typed_config: 
  42.                 "@type": type.googleapis.com/envoy.extensions.compression.gzip.compressor.v3.Gzip 
  43.                 memory_level: 9 
  44.                 window_bits: 12 
  45.                 compression_level: BEST_SPEED 
  46.                 compression_strategy: DEFAULT_STRATEGY 
  47. EOF 
  48.  
  49. kubectl apply -f ef-ratings-http-filter-compression.yaml  -n istio 

raings啟用了壓縮

reviews啟用解壓縮

  1. cat << EOF > ef-reviews-http-filter-compression.yaml  
  2. apiVersion: networking.istio.io/v1alpha3 
  3. kind: EnvoyFilter 
  4. metadata: 
  5.   name: reviews 
  6. spec: 
  7.   workloadSelector: 
  8.     labels: 
  9.       app: reviews 
  10.   configPatches: 
  11.     - applyTo: HTTP_FILTER 
  12.       match: 
  13.         context: SIDECAR_OUTBOUND 
  14.         listener: 
  15.           filterChain: 
  16.             filter: 
  17.               name: envoy.filters.network.http_connection_manager 
  18.               subFilter: 
  19.                 name: envoy.filters.http.router 
  20.       patch: 
  21.         operation: INSERT_BEFORE 
  22.         value: 
  23.           name: envoy.filters.http.decompressor 
  24.           typed_config: 
  25.             "@type": type.googleapis.com/envoy.extensions.filters.http.decompressor.v3.Decompressor 
  26.             response_direction_config: 
  27.               common_config: 
  28.                 enabled: 
  29.                   default_value: true 
  30.                   runtime_key: response_decompressor_enabled 
  31.             request_direction_config: 
  32.               common_config: 
  33.                 enabled: 
  34.                   default_value: false 
  35.                   runtime_key: request_decompressor_enabled 
  36.             decompressor_library: 
  37.               name: text_optimized 
  38.               typed_config: 
  39.                 "@type": type.googleapis.com/envoy.extensions.compression.gzip.decompressor.v3.Gzip 
  40.                 chunk_size: 4096 
  41.                 window_bits: 15 
  42. EOF 
  43.  
  44. kubectl apply -f ef-reviews-http-filter-compression.yaml  -n istio 
  • window_bits

窗口位大小,值從9到15,解壓的窗口位大小需要大于等于壓縮的窗口位大小。默認值是15

  • chunk_size

塊大小,用于輸出緩存,默認值是4096

value must be inside range [4096, 65536]

本文轉載自微信公眾號「k8s實戰」,可以通過以下二維碼關注。轉載本文請聯系k8s實戰公眾號。

 

責任編輯:武曉燕 來源: k8s實戰
相關推薦

2021-07-27 06:51:53

Istio 微服務Service Mes

2023-11-09 09:48:16

數據壓縮微服務

2020-04-10 10:36:20

網絡通信框架

2020-05-07 09:45:16

前端JS圖片壓縮

2016-04-01 10:34:29

APK壓縮Android

2018-08-27 10:54:30

C++壓縮存儲

2024-03-18 08:48:52

Spring多端認證微服務

2020-11-15 23:48:57

服務網格微服務網絡網絡技術

2023-11-27 07:29:05

2022-01-13 09:54:58

微服務 Istio 通信

2020-04-29 16:24:55

開發iOS技術

2011-07-27 16:26:42

iPhone 解壓 gzip

2011-05-20 14:03:31

哈夫曼

2020-06-30 07:58:39

微服務Spring BootCloud

2020-10-20 11:12:11

Nodejs

2011-12-30 11:14:41

Javazip

2024-06-20 08:09:24

2023-06-05 08:00:00

mTLSIstio安全

2018-09-14 16:18:26

Linux壓縮文件應用程序

2025-03-14 07:55:29

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 中文字幕不卡视频在线观看 | 亚洲一二三区在线观看 | 九九99九九精彩46 | 全免费a级毛片免费看视频免 | 国产精品第2页 | 天天色天天色 | 久久国产精品一区二区三区 | 男女啪啪网址 | 亚洲精品中文字幕在线观看 | 黄色av免费网站 | 亚洲日本乱码在线观看 | 精品欧美黑人一区二区三区 | 欧美一级片在线看 | www视频在线观看 | 久草视频观看 | 国产成人精品在线 | 一级做a毛片| 自拍偷拍欧美 | 九久久| 亚洲色图网址 | 国产欧美日韩在线观看 | 婷婷综合久久 | 免费三级黄| 成人av一区二区在线观看 | 色吊丝2| 国产乱码久久久 | 国产在线精品一区二区三区 | 国产精品久久久久永久免费观看 | av电影一区二区 | 国产免费一区 | 亚洲一区二区三区在线视频 | 成人在线精品视频 | 亚洲国产成人精品久久久国产成人一区 | 亚洲国产中文字幕 | 欧美日韩国产精品激情在线播放 | 日韩午夜一区二区三区 | 在线视频h | 97视频在线观看免费 | 日本特黄a级高清免费大片 成年人黄色小视频 | 亚洲免费在线播放 | 日本亚洲一区 |