Aturan throttling parameter hot untuk permintaan HTTP menerapkan throttling detail halus pada parameter individual dalam permintaan masuk ke aplikasi yang menyediakan layanan web. Untuk aplikasi yang menggunakan framework web utama seperti Servlet containers, Spring Web, dan Spring Boot, Microservices Engine (MSE) mengurai parameter permintaan di tingkat API, sehingga Anda dapat melakukan throttle terhadap panggilan resource berdasarkan dimensi permintaan guna melindungi layanan dan stabilitas sistem Anda. Topik ini menjelaskan cara mengonfigurasi aturan throttling parameter hot untuk permintaan HTTP pada suatu aplikasi.
Aturan throttling parameter hot untuk permintaan HTTP sebelumnya dikenal sebagai aturan perlindungan aplikasi web.
Informasi latar belakang
Dalam skenario layanan web, perlindungan throttling untuk panggilan resource berdasarkan dimensi seperti alamat IP sumber permintaan atau parameter permintaan melengkapi throttling dan degradasi di tingkat API serta membantu menjaga aplikasi Anda berjalan sesuai harapan. Misalnya, dalam skenario web bertrafik tinggi, Anda mungkin perlu membatasi tidak hanya API tertentu, tetapi juga alamat IP sumber dengan frekuensi akses tertinggi atau ID produk yang paling sering diakses. Contoh berikut menggambarkan kasus-kasus tersebut:
Batasi ID produk yang paling sering dibeli dalam periode waktu tertentu untuk mencegah cache penetration, yang mengirimkan sejumlah besar permintaan ke database.
Batasi alamat IP sumber yang mengirimkan volume permintaan tinggi dalam periode waktu tertentu untuk mencegah permintaan massal curang yang mengirimkan informasi palsu.
Catatan penggunaan
Sebelum mengonfigurasi aturan throttling parameter hot untuk permintaan HTTP, tinjau perilaku dan batasan berikut:
Resolusi IP klien — Jika Anda mengatur Parameter Properties ke Client IP dan permintaan melewati proxy, MSE pertama-tama mencoba mendapatkan alamat IP dari header permintaan
X-Forwarded-For. Jika header tersebut membawa alamat IP, MSE menggunakannya sebagai alamat IP klien aktual.Tanggapan terhadap permintaan yang di-throttle — Permintaan yang ditolak mengembalikan pesan kustom yang dikonfigurasi dalam manajemen perilaku. Jika tidak ada pesan kustom yang dikonfigurasi, berlaku perilaku default: kode kesalahan HTTP 429 dan pesan teks default.
Batas ambang atas untuk antrian — Saat Anda menggunakan Waiting in line, jangan mengatur QPS ke nilai lebih dari 1.000 (interval permintaan 1 ms).
Prosedur
-
Login ke Konsol MSE, lalu pilih wilayah di bilah navigasi atas.
-
Di panel navigasi kiri, pilih Microservices Governance > Application Governance.
-
Pada halaman Application list, klik kartu resource aplikasi yang diinginkan.
Setelah masuk ke aplikasi, pilih API Details di panel navigasi kiri, klik tab Hotspot Parameter Protection (HTTP Requests), lalu klik New.
Pada kotak dialog Hotspot Parameter Protection (HTTP Requests), konfigurasikan informasi aturan, lalu klik New.
Atur informasi aturan berdasarkan penjelasan di Parameters.
Di daftar aturan, pilih aturan yang telah Anda buat, lalu klik Open di kolom Status.
Pada kotak dialog Tips, klik OK untuk mengaktifkan aturan perlindungan yang telah Anda konfigurasi.
Parameters
Tabel berikut menjelaskan parameter dalam kotak dialog Hotspot Parameter Protection (HTTP Requests). Baris yang tidak memiliki deskripsi menandai langkah konfigurasi atau bagian kotak dialog yang berisi parameter yang tercantum setelahnya. Untuk aturan resolusi IP klien, tanggapan yang dikembalikan terhadap permintaan yang di-throttle, dan batas ambang atas untuk antrian, lihat Catatan penggunaan. Untuk contoh yang memetakan skenario ke sekumpulan nilai, lihat Use cases.
| Parameter | Description |
| Configure Protection Rule | |
| Parameter Properties | Menerapkan throttling berdasarkan properti parameter dari API yang dipilih. Untuk properti yang didukung, lihat Parameter property values. |
| (Optional) Match Pattern and Match String | Tersedia ketika Anda mengatur Parameter Properties ke Header atau URL Parameters. Aktifkan sakelar Property Value Match, lalu tentukan Match Pattern dan Match String. Untuk pola yang didukung, lihat Match patterns. |
| Threshold Type | Nilai default adalah Number of requests. |
| Threshold | Ambang batas QPS objek statistik yang memicu throttling untuk API. Saat menetapkan ambang batas, pilih interval statistik. Detik, menit, jam, dan hari didukung. Misalnya, jika Anda menetapkan ambang batas ke 10 dan memilih Points sebagai interval, tidak lebih dari 10 permintaan diizinkan per menit. |
| Advanced Options | |
| Flow Control Method | Menentukan cara menangani trafik yang di-throttle. Untuk metode yang didukung, lihat Flow control methods. |
| Burst size | Jika Anda mengatur Flow Control Method ke Fast failure, Anda dapat menentukan ukuran burst tambahan, yaitu jumlah permintaan ekstra yang diizinkan untuk lonjakan trafik. |
| Timeout time | Jika Anda mengatur Flow Control Method ke Waiting in line, Anda harus menentukan timeout dalam milidetik (ms). Misalnya, jika QPS adalah 5, hanya satu permintaan yang lolos setiap 200 ms, dan permintaan berlebih masuk antrian. Timeout adalah waktu antrian maksimum. Permintaan yang melebihi waktu antrian maksimum akan ditolak. |
| Whether to open | Enabled: Aturan throttling parameter hot untuk permintaan HTTP langsung berlaku begitu dibuat. Disabled: Aturan tidak berlaku setelah dibuat. |
| Configure Protection Behavior | |
| Association Behavior | Menentukan perilaku aturan setelah throttling. Untuk opsi yang tersedia, lihat Association behavior options. |
Parameter property values
Nilai berikut didukung untuk Parameter Properties:
Client IP: Alamat IP klien yang mengirim permintaan.
Remote Host: Header Host dari klien yang mengirim permintaan.
Header: Throttling berdasarkan Header HTTP yang ditentukan. Jika Anda memasukkan kunci header tertentu, aturan membatasi nilai hot di bawah kunci header tersebut secara terpisah. Setelah memilih Header, Anda dapat mengonfigurasi kebijakan pencocokan untuk nilai atribut permintaan. Hanya nilai atribut yang cocok dengan pola yang dihitung dan di-throttle.
URL Parameters: Throttling berdasarkan parameter permintaan HTTP yang ditentukan. Anda harus memasukkan nama parameter yang sesuai. Setelah memilih URL Parameters, Anda dapat mengonfigurasi kebijakan pencocokan untuk nilai atribut permintaan. Hanya nilai atribut yang cocok dengan pola yang dihitung dan di-throttle.
Match patterns
Nilai valid untuk Match Pattern:
accurate: Mencocokkan nilai secara ketat terhadap string pencocokan yang ditentukan.
Substring: Cocok jika nilai atribut permintaan mengandung substring tersebut. Misalnya, jika substring adalah
ab, makaabadancabccocok, tetapicbatidak.Regular: Mencocokkan nilai terhadap ekspresi reguler yang ditentukan.
Flow control methods
Nilai berikut didukung untuk Flow Control Method:
Fast failure: Jika jenis ambang batas adalah QPS, trafik yang di-throttle gagal secara cepat. Artinya, permintaan langsung ditolak ketika ambang batas tercapai.
Waiting in line: Jika jenis ambang batas adalah QPS, permintaan yang di-throttle lolos dengan laju stabil dan diizinkan masuk antrian. Anda harus menentukan timeout. Permintaan yang diperkirakan mencapai timeout gagal langsung tanpa masuk antrian. Misalnya, jika QPS adalah 10, hanya satu permintaan yang lolos setiap 100 ms, dan permintaan berlebih masuk antrian. Timeout adalah waktu antrian maksimum. Permintaan yang melebihi waktu antrian maksimum akan ditolak.
Association behavior options
Nilai berikut didukung untuk Association Behavior:
Default Behavior: Opsi default. Gunakan perilaku default jika Anda tidak perlu menyesuaikan perilaku pasca-throttling.
New behavior: Menambahkan perilaku pasca-throttling kustom. Setelah membuat perilaku tersebut, Anda dapat memilihnya dari daftar drop-down Association Behavior.
Use cases
Masing-masing contoh berikut memetakan skenario ke nilai parameter yang dibutuhkan skenario tersebut dalam kotak dialog Hotspot Parameter Protection (HTTP Requests). Konfigurasikan parameter yang tidak tercantum dalam contoh, seperti Whether to open, seperti yang dijelaskan di Parameters.
Penjualan kilat untuk produk populer
Dalam skenario seperti penjualan kilat, trafik tinggi dapat memperlambat respons sistem Anda atau bahkan menyebabkannya crash. Untuk menjaga stabilitas sistem, konfigurasikan aturan throttling parameter hot untuk permintaan HTTP. Ketika ambang batas yang ditentukan terlampaui, sistem menolak trafik berlebih untuk produk populer tersebut.
Misalnya, untuk mengizinkan maksimal 100 permintaan pesanan per detik untuk setiap ID produk populer secara individual dan menolak semua permintaan pesanan berlebih untuk produk tersebut, konfigurasikan parameter berikut:
Atur Parameter Properties ke URL Parameters.
Untuk URL Parameter Name, masukkan
stockId.Atur Threshold ke 100 permintaan per Second.
Atur Flow Control Method ke Fast failure.
Untuk Parameter Properties, pilih bidang parameter yang membawa ID produk populer saat ini. Dalam contoh ini, parameter URL berisi bidang stockId yang membawa ID produk yang diminta.
Permintaan massal curang selama promosi
Selama promosi, sejumlah besar permintaan massal curang dapat menghabiskan stok produk atau sumber daya server. Dalam kasus ini, terapkan Waiting in line pada alamat IP sumber permintaan sehingga permintaan lolos dengan laju stabil dan permintaan berlebih tidak memengaruhi stabilitas layanan.
Misalnya, konfigurasikan parameter berikut. Permintaan yang dikirim oleh setiap alamat IP sumber berbeda ke API ini lolos dengan laju stabil satu permintaan setiap 10 ms (1 dtk/100 = 10 ms), dan permintaan berlebih masuk antrian. Permintaan dalam antrian yang menunggu lebih dari 30 ms gagal langsung.
Atur Parameter Properties ke Client IP.
Pertahankan nilai default Number of requests untuk Threshold Type.
Atur Threshold ke 100 permintaan per Second.
Atur Flow Control Method ke Waiting in line.
Untuk Timeout time, masukkan 30.
Atur Whether to open ke Enabled.