Qatzstd 压缩器

Qatzstd 压缩器通过集成 英特尔® 快速辅助技术 (英特尔® QAT)(通过 qatlib 和 QAT-ZSTD-Plugin 库)为 Envoy 提供更快的硬件加速 zstd 压缩。

示例配置

Qatzstd 压缩器配置的一个示例是

static_resources:
  listeners:
  - address:
      socket_address:
        address: 0.0.0.0
        port_value: 10000
    filter_chains:
    - filters:
      - name: envoy.filters.network.http_connection_manager
        typed_config:
          "@type": type.googleapis.com/envoy.extensions.filters.network.http_connection_manager.v3.HttpConnectionManager
          stat_prefix: ingress_http
          route_config:
            name: local_route
            virtual_hosts:
            - name: backend
              domains:
              - "*"
              routes:
              - match:
                  prefix: "/"
                route:
                  cluster: service
          http_filters:
          - name: envoy.filters.http.compressor
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.compressor.v3.Compressor
              response_direction_config:
                common_config:
                  min_content_length: 100
                  content_type:
                  - application/octet-stream
                disable_on_etag_header: false
              compressor_library:
                name: text_optimized
                typed_config:
                  "@type": type.googleapis.com/envoy.extensions.compression.qatzstd.compressor.v3alpha.Qatzstd
                  compression_level: 9
                  enable_qat_zstd: true
                  chunk_size: 65536
                  qat_zstd_fallback_threshold: 0
          - name: envoy.filters.http.router
            typed_config:
              "@type": type.googleapis.com/envoy.extensions.filters.http.router.v3.Router
  clusters:
  - name: service
    connect_timeout: 0.25s
    type: STRICT_DNS
    lb_policy: ROUND_ROBIN
    load_assignment:
      cluster_name: service
      endpoints:
      - lb_endpoints:
        - endpoint:
            address:
              socket_address:
                address: 127.0.0.1
                port_value: 1234
admin:
  address:
    socket_address:
      address: 0.0.0.0
      port_value: 9901

工作原理

如果启用,Qatzstd 压缩器将

  • 连接 Qat 硬件

  • 为每个工作线程创建线程本地 Qatzstd 上下文

当新的 http 包到达时,一个工作线程将使用它的 Qatzstd 上下文处理它,并将需要压缩的数据使用标准 zstd api 发送到 Qat 硬件。

安装和使用 QAT-ZSTD-Plugin

有关如何构建/安装和使用 QAT-ZSTD-Plugin 的信息,请参见 介绍