All Products
Search
Document Center

Alibaba Cloud Service Mesh:Gunakan ASMCompressor untuk menentukan konfigurasi kompresi untuk panggilan antar layanan aplikasi

Last Updated:Nov 11, 2025

Konfigurasi kompresi berbeda-beda tergantung pada bahasa pemrograman dan kerangka kerja yang digunakan. Anda dapat mengelola dan memelihara konfigurasi kompresi secara lebih efektif dengan menambahkan filter kompresi yang menerapkan konfigurasi konsisten di seluruh aplikasi Anda. Konfigurasi tersebut mencakup jumlah byte minimum yang dikompresi, tingkat kompresi, serta tanggapan mana yang akan dikompresi secara default. Topik ini menjelaskan cara menggunakan ASMCompressor untuk menentukan konfigurasi kompresi untuk panggilan antar layanan aplikasi.

Prasyarat

Deskripsi fitur

Proxy waypoint mendukung algoritma Gzip dan Brotli.

  • Gzip adalah algoritma kompresi yang banyak digunakan dan didukung oleh sebagian besar server web dan browser. Algoritma ini dikenal karena rasio kompresi yang tinggi dan kecepatan kompresi yang cepat, serta sering digunakan untuk mengompresi konten statis maupun dinamis.

  • Brotli adalah algoritma kompresi canggih yang menawarkan rasio kompresi lebih tinggi dan kecepatan dekompresi lebih cepat, sehingga banyak digunakan dalam layanan web. Algoritma ini umumnya digunakan untuk mengompresi konten statis, seperti file HTML, Cascading Style Sheets (CSS), dan JavaScript.

Dibandingkan dengan Gzip, Brotli memberikan rasio kompresi yang lebih tinggi namun mungkin sedikit memengaruhi kecepatan kompresi. Anda dapat memilih algoritma kompresi berdasarkan skenario aplikasi aktual dan persyaratan kinerja.

Aktifkan dan verifikasi kompresi Gzip

Langkah 1: Catat ukuran tanggapan yang dikembalikan saat kompresi belum diaktifkan

  1. Dapatkan alamat IP gerbang masuk.

    1. Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih Service Mesh > Mesh Management.

    2. Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih ASM Gateways > Ingress Gateway.

    3. Di halaman Ingress Gateway, peroleh nilai Service address.

  2. Di bilah alamat browser Anda, masukkan http://{alamat gateway ASM}/productpage untuk mengakses aplikasi Bookinfo.

  3. Aktifkan mode pengembang di browser dan periksa ukuran tanggapan yang dikembalikan untuk permintaan productpage.

    Seperti yang ditunjukkan pada gambar berikut, ukuran tanggapan yang dikembalikan adalah 5,5 KB.

    215BDB4C-576C-45ae-89ED-C378C13BB925.png

Langkah 2: Aktifkan kompresi Gzip

  1. Buat file ingressgateway-gzip.yaml dengan konten berikut.

    Untuk informasi selengkapnya tentang bidang-bidang tersebut, lihat Deskripsi bidang ASMCompressor.

    Perluas untuk melihat ingressgateway-gzip.yaml

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: ASMCompressor
    metadata:
      name: ingressgateway-gzip
      namespace: istio-system
    spec:
      compressor_library:
        gzip:
          compression_level: BEST_COMPRESSION
          compression_strategy: DEFAULT_STRATEGY
          memory_level: 9
          window_bits: 15
      isGateway: true
      portNumber: 80
      request_direction_config:  # Nonaktifkan kompresi permintaan
        common_config:
          enabled:
            default_value: false
            runtime_key: NOT_EXISTENT_KEY
      response_direction_config:  # Aktifkan kompresi tanggapan
        common_config:
          content_type:
          - application/json
          - text/plain
          - text/html
          min_content_length: 100
        disable_on_etag_header: true
      workloadSelector:
        labels:
          istio: ingressgateway
  2. Jalankan perintah berikut untuk mengaktifkan kompresi Gzip:

    kubectl apply -f ingressgateway-gzip.yaml

Langkah 3: Lihat hasil setelah kompresi Gzip diaktifkan

  1. Di bilah alamat browser Anda, masukkan http://{alamat gateway ASM}/productpage untuk mengakses aplikasi Bookinfo.

  2. Aktifkan mode pengembang browser dan periksa ukuran tanggapan yang dikembalikan untuk permintaan productpage.

    Seperti yang ditunjukkan pada gambar berikut, ukuran tanggapan yang dikembalikan berubah dari 5,5 KB menjadi 1,8 KB, yang menunjukkan bahwa konfigurasi kompresi Gzip telah berlaku.

    22.png

Langkah 4: Verifikasi kompresi Brotli

  1. Ubah layanan virtual bernama bookinfo.

    1. Tambahkan konten berikut ke bagian spec.http file `bookinfo.yaml`:

      - directResponse:
              body:
                string: >-
                  Hello, world! Hello, world! Hello, world! Hello, world! Hello,
                  world! Hello, world! Hello, world! Hello, world! Hello, world!
                  Hello, world!
                   Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world!
                    Hello, world! Hello, world! Hello, world! Hello, world!
              status: 200
            match:
              - uri:
                  prefix: /helloworld

      Kode berikut menunjukkan konten file YAML yang telah dimodifikasi:

      Perluas untuk melihat file bookinfo.yaml yang telah dimodifikasi

      apiVersion: networking.istio.io/v1beta1
      kind: VirtualService
      metadata:
        name: bookinfo
      spec:
        gateways:
          - bookinfo-gateway
        hosts:
          - '*'
        http:
          - directResponse:
              body:
                string: >-
                  Hello, world! Hello, world! Hello, world! Hello, world! Hello,
                  world! Hello, world! Hello, world! Hello, world! Hello, world!
                  Hello, world!
                   Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world!
                    Hello, world! Hello, world! Hello, world! Hello, world!
              status: 200
            match:
              - uri:
                  prefix: /helloworld
          - match:
              - uri:
                  exact: /productpage
              - uri:
                  prefix: /static
              - uri:
                  exact: /login
              - uri:
                  exact: /logout
              - uri:
                  prefix: /api/v1/products
            route:
              - destination:
                  host: productpage
                  port:
                    number: 9080
      
    2. Jalankan perintah berikut untuk menerapkan layanan virtual:

      kubectl apply -f bookinfo.yaml
  2. Aktifkan kompresi Brotli.

    1. Gunakan konten berikut untuk membuat file ingressgateway-brotli.yaml.

      Untuk informasi selengkapnya tentang bidang-bidang tersebut, lihat Deskripsi bidang ASMCompressor.

      Perluas untuk melihat file ingressgateway-brotli.yaml

      apiVersion: istio.alibabacloud.com/v1beta1
      kind: ASMCompressor
      metadata:
        name: ingressgateway-brotli
        namespace: istio-system
      spec:
        compressor_library:
          brotli:
            quality: 5
            window_bits: 15
        isGateway: true
        portNumber: 80
        request_direction_config:  # Nonaktifkan kompresi permintaan
          common_config:
            enabled:
              default_value: false
              runtime_key: NOT_EXISTENT_KEY
        response_direction_config:
          common_config:
            content_type:
            - application/json
            - text/plain
            - text/html
            min_content_length: 100
          disable_on_etag_header: true
        workloadSelector:
          labels:
            istio: ingressgateway
    2. Jalankan perintah berikut untuk mengaktifkan kompresi Brotli:

      kubectl apply -f ingressgateway-brotli.yaml
  3. Periksa apakah kompresi Brotli berlaku.

    1. Jalankan perintah berikut untuk menyimpan tanggapan untuk path /helloworld ke file `out.br`:

      curl -I -H "Accept-Encoding: br" http://{alamat IP gateway ASM}/helloworld > out.br
    2. Instal Brotli.

      • Di macOS, jalankan perintah brew install brotli untuk menginstal Brotli.

      • Windows: Untuk informasi selengkapnya tentang prosedur instalasi, lihat brotli.

    3. Jalankan perintah berikut di Brotli untuk mendekompresi file out.br:

      brotli -d out.br

      Anda dapat melihat file yang telah didekompresi beserta isinya, yang menunjukkan bahwa konfigurasi kompresi Brotli telah berlaku.

Langkah 5: Verifikasi konfigurasi di tingkat entri rute

  1. Setelah menyelesaikan konfigurasi di Langkah 4, kompresi diaktifkan untuk tanggapan dari semua path. Gunakan perintah berikut untuk menguji konfigurasi:

    curl ${alamat IP gateway ASM}/helloworld > helloworld_no_compress.html
    curl -H "Accept-Encoding: br" ${alamat IP gateway ASM}/helloworld > helloworld_compress.html
    curl ${alamat IP gateway ASM}/productpage > productpage_no_compress.html
    curl -H "Accept-Encoding: br" ${alamat IP gateway ASM}/productpage > productpage_compress.html
  2. Jalankan perintah ls untuk membandingkan ukuran tanggapan untuk kedua path:

    ls -lh
    total 40
    -rw-r--r--@ 1 user  staff    37B  5 28 18:16 helloworld_compress.html
    -rw-r--r--@ 1 user  staff   324B  5 28 18:15 helloworld_no_compress.html
    -rw-r--r--@ 1 user  staff   1,2K  5 28 18:17 productpage_compress.html
    -rw-r--r--@ 1 user  staff   5,2K  5 28 18:16 productpage_no_compress.html
  3. Ubah layanan virtual untuk menambahkan nama entri rute ke entri rute yang sesuai dengan path `helloworld`. File `bookinfo.yaml` yang telah dimodifikasi adalah sebagai berikut:

    Perluas untuk melihat file YAML yang telah dimodifikasi

    apiVersion: networking.istio.io/v1beta1
    kind: VirtualService
    metadata:
      name: bookinfo
    spec:
      gateways:
        - bookinfo-gateway
      hosts:
        - '*'
      http:
        - directResponse:
            body:
              string: >-
                Hello, world! Hello, world! Hello, world! Hello, world! Hello,
                world! Hello, world! Hello, world! Hello, world! Hello, world!
                Hello, world!
                 Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world! Hello, world!
                  Hello, world! Hello, world! Hello, world! Hello, world!
            status: 200
          match:
            - uri:
                prefix: /helloworld
          name: helloworld-route    # Tentukan nama untuk entri rute. Dengan cara ini, plugin kompresi dapat mencocokkan paket dengan lebih mudah. 
        - match:
            - uri:
                exact: /productpage
            - uri:
                prefix: /static
            - uri:
                exact: /login
            - uri:
                exact: /logout
            - uri:
                prefix: /api/v1/products
          route:
            - destination:
                host: productpage
                port:
                  number: 9080
  4. Tambahkan konfigurasi tingkat entri rute di ASMCompressor dan nonaktifkan fitur kompresi pada entri rute helloworld. Kode berikut menunjukkan konten ASMCompressor yang telah dimodifikasi:

    apiVersion: istio.alibabacloud.com/v1beta1
    kind: ASMCompressor
    metadata:
      name: ingressgateway-gzip
      namespace: istio-system
    spec:
      compressor_library:
        brotli:
          quality: 5
          window_bits: 15
      isGateway: true
      portNumber: 80
      request_direction_config:  # Nonaktifkan kompresi permintaan.
        common_config:
          enabled:
            default_value: false
            runtime_key: NOT_EXISTENT_KEY
      response_direction_config:
        common_config:
          content_type:
          - application/json
          - text/plain
          - text/html
          min_content_length: 100
        disable_on_etag_header: true
      per_route_configs:  # Konfigurasi tingkat entri rute baru
      - disabled: true
        route_match:
          vhost:
            route:
              name: helloworld-route  # Masukkan nama entri rute yang dikonfigurasi di VirtualService.
      workloadSelector:
        labels:
          istio: ingressgateway
  5. Jalankan perintah berikut untuk memverifikasi bahwa kompresi tanggapan dinonaktifkan untuk path /helloworld:

    curl -H "Accept-Encoding: br" ${alamat IP gateway ASM}/helloworld > helloworld_route_disabled.html
  6. Jalankan perintah ls lagi untuk memeriksa ukuran tanggapan dari path `/helloworld`.

    ls -lh
    total 48
    -rw-r--r--@ 1 user  staff    37B  5 28 18:16 helloworld_compress.html
    -rw-r--r--@ 1 user  staff   324B  5 28 18:15 helloworld_no_compress.html
    -rw-r--r--@ 1 user  staff   324B  5 28 19:29 helloworld_route_disabled.html
    -rw-r--r--@ 1 user  staff   1,3K  5 28 19:30 productpage_compress.html
    -rw-r--r--@ 1 user  staff   5,2K  5 28 18:16 productpage_no_compress.html

    Keluaran menunjukkan bahwa kompresi dinonaktifkan di tingkat entri rute.