Throttling mencegah layanan backend kewalahan akibat permintaan eksternal berlebihan sehingga menghindari kegagalan berantai. Cloud-native API Gateway mendukung kebijakan throttling tingkat route yang membatasi jumlah permintaan pada suatu route dalam rentang waktu tertentu.
Konfigurasikan kebijakan throttling
Ambang batas throttling yang Anda konfigurasikan merupakan ambang batas throttling tingkat gateway. Anda dapat menghitung ambang batas throttling untuk satu node gateway menggunakan rumus berikut: Ambang batas throttling tingkat gateway ÷ jumlah node. Jika hasil perhitungan berupa nilai desimal, nilai tersebut dibulatkan ke atas ke bilangan bulat terdekat. Misalnya, queries per second (QPS) pada route demo adalah 1.001. Jika gateway Anda memiliki dua node, batas QPS untuk route demo pada setiap node gateway adalah 501.
-
Anda dapat mengonfigurasi kebijakan throttling di dalam atau di luar instans Cloud-native API Gateway.
External API
-
Masuk ke Cloud-native API Gateway console. Di panel navigasi sebelah kiri, klik API. Di bilah navigasi atas, pilih wilayah.
-
Klik API target. Dari daftar drop-down, pilih instans tempat Anda ingin mengonfigurasi throttling, atau pilih All Instances. Dari daftar drop-down instans di bilah navigasi atas, pilih instans target.
-
Di bagian Routes, klik route target.
Internal API
-
Masuk ke Cloud-native API Gateway console. Di panel navigasi sebelah kiri, klik Instance. Di bilah navigasi atas, pilih wilayah.
-
Pada halaman Instance, klik ID instans gateway target. Di panel navigasi sebelah kiri, klik API, lalu klik API target.
-
Di bagian Routes, klik route target.
-
-
Klik tab Configure Policy, lalu klik Enable Policy/Plug-in di bagian Inbound Processing.
-
Tambahkan kebijakan throttling. Opsi yang tersedia meliputi Traffic Control, Concurrency Control, dan Circuit Breaking.
Traffic Throttling
Aturan throttling memantau QPS suatu route dan segera memblokir traffic ketika ambang batas tercapai, sehingga mencegah kerusakan layanan backend akibat lonjakan traffic.
Klik kartu Traffic Control. Di panel Add Policy: Traffic Control, konfigurasikan parameter, lalu klik Add.
Parameter
Deskripsi
Enable or Not
Nyalakan sakelar ini untuk mengaktifkan kebijakan traffic control.
Overall QPS Threshold
Overall QPS Threshold.
Web Fallback Behavior
Atur Web Fallback Behavior menjadi Return Specific Content atau Redirect to Specified Page.
Jika Anda mengatur Web Fallback Behavior menjadi Return Specific Content:
HTTP Status Code
HTTP Status Code yang akan dikembalikan. Nilai default-nya adalah 429.
Type of Returned Content
Type of Returned Content dari badan respons. Anda dapat memilih Regular Text atau JSON.
HTTP Text
Teks yang akan dikembalikan.
Jika Anda mengatur Web Fallback Behavior menjadi Redirect to Specified Page:
Redirect URL
Redirect URL.
Concurrency control
Aturan konkurensi melacak jumlah total permintaan yang sedang diproses oleh gateway dan memblokir traffic ketika jumlah tersebut mencapai ambang batas yang ditentukan, sehingga melindungi ketersediaan layanan backend dalam skenario konkurensi tinggi.
Klik kartu Concurrency Control. Di panel Add Policy: Concurrency Control, konfigurasikan parameter, lalu klik Add.
Parameter
Deskripsi
Enable or Not
Nyalakan sakelar ini untuk mengaktifkan aturan konkurensi.
Overall Concurrency Threshold
Overall Concurrency Threshold.
Web Fallback Behavior
Atur Web Fallback Behavior menjadi Return Specific Content atau Redirect to Specified Page.
Jika Anda mengatur Web Fallback Behavior menjadi Return Specific Content:
HTTP Status Code
HTTP Status Code yang akan dikembalikan. Nilai default-nya adalah 429.
Type of Returned Content
Type of Returned Content dari badan respons. Anda dapat memilih Regular Text atau JSON.
HTTP Text
Badan respons yang akan dikembalikan.
Jika Anda mengatur Web Fallback Behavior menjadi Redirect to Specified Page:
Redirect URL
Redirect URL.
Circuit breaking
Aturan pemutusan sirkuit aktif ketika waktu respons (RT) atau rasio pengecualian pada suatu route mencapai ambang batas yang ditentukan. Setelah aktif, gateway menolak semua permintaan pada route tersebut selama durasi yang telah dikonfigurasi untuk melindungi layanan backend, lalu secara otomatis melanjutkan panggilan.
Klik kartu Circuit Breaking. Di panel Add Policy: Circuit Breaking, konfigurasikan parameter, lalu klik Add.
Parameter
Deskripsi
Enable or Not
Nyalakan sakelar ini untuk mengaktifkan aturan pemutusan sirkuit.
Statistical Window Duration
Durasi jendela waktu. Nilai valid: 1 detik hingga 120 menit.
Minimum Number of Requests
Jumlah minimum permintaan untuk memicu pemutusan sirkuit. Jika jumlah permintaan dalam jendela waktu saat ini kurang dari nilai parameter ini, pemutusan sirkuit tidak dipicu meskipun aturan pemutusan sirkuit terpenuhi.
Threshold Type
Metrik yang digunakan untuk memicu pemutusan sirkuit. Anda dapat memilih Slow Call Ratio (%) atau Exception Ratio (%).
-
Jika Anda memilih Slow Call Ratio (%), Anda harus menetapkan Slow Call RT, yaitu waktu respons maksimum. Permintaan dianggap sebagai slow call jika waktu responsnya melebihi nilai ini. Setelah aturan diaktifkan, jika jumlah permintaan dalam jendela statistik melebihi jumlah minimum permintaan dan rasio slow call melebihi ambang batas yang ditentukan, permintaan akan ditolak selama durasi pemutusan sirkuit. Setelah durasi pemutusan sirkuit berakhir, pemutus sirkuit memasuki status pemulihan probing. Jika waktu respons permintaan berikutnya kurang dari Slow Call RT yang ditentukan, sirkuit ditutup. Jika tidak, sirkuit dibuka kembali.
-
Jika Anda memilih Exception Ratio (%), Anda harus menetapkan rasio pengecualian yang memicu pemutusan sirkuit. Setelah aturan diaktifkan, jika jumlah pengecualian bisnis dalam jendela statistik melebihi jumlah minimum permintaan dan rasio pengecualian melebihi ambang batas, permintaan akan ditolak selama periode pemutusan sirkuit.
Slow Call RT
Slow Call RT yang diizinkan (waktu respons maksimum).
Circuit Breaking Ratio Threshold
Ambang batas persentase untuk slow call. Jika ambang batas yang ditentukan tercapai atau dilampaui, pemutusan sirkuit dipicu. Nilai valid: 0–100. Nilai-nilai ini merepresentasikan 0% hingga 100%.
Circuit Breaking Duration (s)
Durasi pemutusan sirkuit tetap aktif. Selama periode ini, semua permintaan ke route tersebut ditolak.
Web Fallback Behavior
Pilih Web Fallback Behavior sebagai Return Specific Content atau Redirect to Specified Page.
Jika Anda mengatur Web Fallback Behavior menjadi Return Specific Content:
HTTP Status Code
HTTP Status Code yang akan dikembalikan. Nilai default-nya adalah 429.
Type of Returned Content
Type of Returned Content dari badan respons. Anda dapat memilih Regular Text atau JSON.
HTTP Text
Badan respons yang akan dikembalikan.
Jika Anda mengatur Web Fallback Behavior menjadi Redirect to Specified Page:
Redirect URL
Redirect URL.
-
Verifikasi hasil
Jalankan perintah berikut untuk mengirim permintaan uji:
curl -I http://121.196.XX.XX/demo/item/list //Alamat IP ingress gateway.
-
Respons yang mirip dengan contoh berikut dikembalikan jika kebijakan throttling tidak diaktifkan:
HTTP/1.1 200 OK x-content-type-options: nosniff x-xss-protection: 1; mode=block cache-control: no-cache, no-store, max-age=0, must-revalidate pragma: no-cache expires: 0 x-frame-options: DENY content-type: application/json content-length: 86 date: Mon, 29 Nov 2021 08:28:00 GMT x-envoy-upstream-service-time: 4 server: istio-envoy -
Respons yang mirip dengan contoh berikut dikembalikan jika kebijakan throttling diaktifkan. Kode status HTTP 429 dikembalikan.
HTTP/1.1 429 Too Many Requests x-local-rate-limit: true content-length: 18 content-type: text/plain date: Mon, 29 Nov 2021 08:28:01 GMT server: istio-envoy