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
Kluster Container Service for Kubernetes (ACK) telah ditambahkan ke instans ASM versi 1.21 atau yang lebih baru. Untuk informasi selengkapnya, lihat Tambahkan kluster ke instans ASM dan Perbarui instans ASM.
Aplikasi Bookinfo telah diterapkan di instans ASM. Untuk informasi selengkapnya, lihat Terapkan aplikasi di kluster ACK yang ditambahkan ke instans ASM.
Sumber daya Istio digunakan untuk mengarahkan lalu lintas ke berbagai versi layanan. Untuk informasi selengkapnya, lihat Gunakan sumber daya Istio untuk mengarahkan lalu lintas ke berbagai versi layanan.
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
Dapatkan alamat IP gerbang masuk.
Masuk ke Konsol ASM. Di panel navigasi sebelah kiri, pilih .
Di halaman Mesh Management, klik nama instans ASM. Di panel navigasi sebelah kiri, pilih .
Di halaman Ingress Gateway, peroleh nilai Service address.
Di bilah alamat browser Anda, masukkan
http://{alamat gateway ASM}/productpageuntuk mengakses aplikasi Bookinfo.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.

Langkah 2: Aktifkan kompresi Gzip
Buat file ingressgateway-gzip.yaml dengan konten berikut.
Untuk informasi selengkapnya tentang bidang-bidang tersebut, lihat Deskripsi bidang ASMCompressor.
Jalankan perintah berikut untuk mengaktifkan kompresi Gzip:
kubectl apply -f ingressgateway-gzip.yaml
Langkah 3: Lihat hasil setelah kompresi Gzip diaktifkan
Di bilah alamat browser Anda, masukkan
http://{alamat gateway ASM}/productpageuntuk mengakses aplikasi Bookinfo.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.

Langkah 4: Verifikasi kompresi Brotli
Ubah layanan virtual bernama bookinfo.
Tambahkan konten berikut ke bagian
spec.httpfile `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: /helloworldKode berikut menunjukkan konten file YAML yang telah dimodifikasi:
Jalankan perintah berikut untuk menerapkan layanan virtual:
kubectl apply -f bookinfo.yaml
Aktifkan kompresi Brotli.
Gunakan konten berikut untuk membuat file ingressgateway-brotli.yaml.
Untuk informasi selengkapnya tentang bidang-bidang tersebut, lihat Deskripsi bidang ASMCompressor.
Jalankan perintah berikut untuk mengaktifkan kompresi Brotli:
kubectl apply -f ingressgateway-brotli.yaml
Periksa apakah kompresi Brotli berlaku.
Jalankan perintah berikut untuk menyimpan tanggapan untuk path
/helloworldke file `out.br`:curl -I -H "Accept-Encoding: br" http://{alamat IP gateway ASM}/helloworld > out.brInstal Brotli.
Di macOS, jalankan perintah
brew install brotliuntuk menginstal Brotli.Windows: Untuk informasi selengkapnya tentang prosedur instalasi, lihat brotli.
Jalankan perintah berikut di Brotli untuk mendekompresi file out.br:
brotli -d out.brAnda dapat melihat file yang telah didekompresi beserta isinya, yang menunjukkan bahwa konfigurasi kompresi Brotli telah berlaku.
Langkah 5: Verifikasi konfigurasi di tingkat entri rute
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.htmlJalankan perintah
lsuntuk 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.htmlUbah layanan virtual untuk menambahkan nama entri rute ke entri rute yang sesuai dengan path `helloworld`. File `bookinfo.yaml` yang telah dimodifikasi adalah sebagai berikut:
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: ingressgatewayJalankan perintah berikut untuk memverifikasi bahwa kompresi tanggapan dinonaktifkan untuk path
/helloworld:curl -H "Accept-Encoding: br" ${alamat IP gateway ASM}/helloworld > helloworld_route_disabled.htmlJalankan perintah
lslagi 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.htmlKeluaran menunjukkan bahwa kompresi dinonaktifkan di tingkat entri rute.