Zstd
藉由在 Envoy 中啟用壓縮,您可以節省一些網路頻寬,但會增加處理器的使用率。
Envoy 支援請求和回應的壓縮和解壓縮。
此沙箱提供透過 HTTPS
提供回應壓縮的範例。
此沙箱涵蓋兩種情境
壓縮來自上游伺服器的檔案
壓縮 Envoy 自身的統計資訊
步驟 1: 啟動所有容器
變更至 examples/zstd
目錄並啟動 docker 組合。
$ pwd
envoy/examples/zstd
$ docker compose pull
$ docker compose up --build -d
$ docker compose ps
Name Command State Ports
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
zstd_envoy-stats_1 /docker-entrypoint.sh /usr ... Up 0.0.0.0:10000->10000/tcp,:::10000->10000/tcp, 0.0.0.0:9901->9901/tcp,:::9901->9901/tcp, 0.0.0.0:9902->9902/tcp,:::9902->9902/tcp
zstd_service_1 python3 /code/service.py Up
步驟 2: 測試 Envoy 對上游檔案的壓縮
此沙箱設定了兩個在連接埠 10000
上提供上游檔案的端點
/file.txt
/file.json
只有 /file.json
設定為壓縮。
使用 curl
檢查從請求 file.json
收到的回應是否包含 content-encoding: zstd
標頭。
您需要新增一個 accept-encoding: zstd
請求標頭。
$ curl -ski -H "Accept-Encoding: zstd" https://127.0.0.1:10000/file.json | grep "content-encoding"
content-encoding: zstd
由於只有內容類型為 application/json
的檔案設定為壓縮,因此從請求 file.txt
收到的回應不應包含 content-encoding: zstd
標頭,且該檔案將不會被壓縮
$ curl -ski -H "Accept-Encoding: zstd" https://127.0.0.1:10000/file.txt | grep "content-encoding"
步驟 3: 測試 Envoy 統計資訊的壓縮
此沙箱設定了兩個連接埠,用於提供 Envoy 的管理和統計資訊介面
9901
公開標準管理介面,不使用 tls9902
公開使用 tls 的壓縮版本管理介面
使用 curl
向連接埠 9901
發出未壓縮統計資訊的請求,回應中不應包含 content-encoding
標頭
$ curl -ski -H "Accept-Encoding: zstd" https://127.0.0.1:9901/stats/prometheus | grep "content-encoding"
現在,使用 curl
發出壓縮統計資訊的請求
$ curl -ski -H "Accept-Encoding: zstd" https://127.0.0.1:9902/stats/prometheus | grep "content-encoding"
content-encoding: zstd
另請參閱
- Zstd API
Envoy 的 zstd 壓縮的 API 和設定參考。
- 壓縮設定
Envoy 壓縮器過濾器的參考文件。
- Envoy 管理快速入門指南
Envoy 管理介面的快速入門指南。