全部产品
Search
文档中心

API Gateway:Plugin Throttling

更新时间:Nov 10, 2025

Topik ini menjelaskan konfigurasi plugin throttling dan memberikan contoh untuk beberapa skenario umum.

1. Ikhtisar

  • Plugin throttling membatasi laju pemanggilan API. Anda dapat mengatur lalu lintas berdasarkan API, App (AccessKey yang digunakan untuk akses), pengguna (pemilik aplikasi), atau parameter kustom.

  • Plugin throttling mendukung dua templat konfigurasi:

    • Konfigurasi throttling berbasis parameter: Templat ini digunakan untuk mengonfigurasi throttling berdasarkan parameter kustom.

    • Konfigurasi throttling dasar: Templat ini kompatibel dengan fitur throttling di konsol.

  • Fitur throttling kini merupakan bagian dari sistem plugin. Antarmuka throttling dan konsol yang ada tetap tersedia. Kebijakan throttling dan plugin throttling merupakan jenis plugin yang sama. Jika Anda mengikat plugin throttling ke suatu API, kebijakan throttling yang ada menjadi tidak berlaku.

  • Saat Anda membuat atau memodifikasi kebijakan throttling di antarmuka atau konsol throttling asli, modifikasi disinkronkan ke sistem plugin. Namun, modifikasi yang Anda buat di sistem plugin tidak dapat disinkronkan ke antarmuka atau konsol throttling.

2. Konfigurasi throttling dasar

2.1 Kemampuan throttling

2.1.1 Ambang batas throttling

  • Batas lalu lintas API: Jumlah maksimum panggilan yang diizinkan per satuan waktu untuk suatu API yang dikaitkan dengan kebijakan tersebut. Satuan waktu dapat berupa detik, menit, jam, atau hari. Misalnya, 5.000 panggilan/menit.

  • Batas lalu lintas APP: Jumlah maksimum panggilan yang diizinkan per satuan waktu dari setiap aplikasi ke API apa pun yang dikaitkan dengan kebijakan tersebut. Misalnya, 50.000 panggilan/jam.

  • Batas lalu lintas pengguna: Jumlah maksimum panggilan yang diizinkan per satuan waktu dari setiap akun Alibaba Cloud ke API apa pun yang dikaitkan dengan kebijakan tersebut. Satu akun Alibaba Cloud dapat memiliki beberapa aplikasi, dan batas ini berlaku untuk total lalu lintas dari semua aplikasi yang dimiliki akun tersebut. Misalnya, 500.000 panggilan/hari.

Catatan

Anda dapat menentukan semua ambang batas sebelumnya secara bersamaan dalam satu plugin throttling. Ambang batas throttling tingkat pengguna tidak boleh lebih besar dari ambang batas throttling tingkat API, dan ambang batas throttling tingkat aplikasi tidak boleh lebih besar dari ambang batas throttling tingkat pengguna.

Anda juga dapat menambahkan aplikasi atau pengguna khusus ke dalam kebijakan throttling. Dengan cara ini, Anda dapat mengatur ambang batas throttling khusus untuk setiap aplikasi atau pengguna. Ambang batas throttling khusus tidak boleh lebih besar dari ambang batas throttling tingkat API.

2.1.2 Satuan waktu dan algoritma throttling

Plugin throttling API Gateway mendukung detik (SECOND), menit (MINUTE), jam (HOUR), dan hari (DAY) sebagai satuan waktu. Algoritma jendela waktu tetap digunakan untuk satuan menit, jam, dan hari. Algoritma bucket token digunakan secara default untuk satuan detik. Jika algoritma bucket token tidak memenuhi kebutuhan Anda, Anda dapat mengonfigurasi algoritma jendela waktu tetap sebagai gantinya. Kedua algoritma tersebut dijelaskan sebagai berikut:

  • Algoritma bucket token: Ini adalah algoritma default untuk throttling tingkat detik. Algoritma bucket token memiliki dua konsep: bucket token dan antrian tunggu. Mesin API Gateway secara berkala menambahkan token ke bucket token. Saat permintaan klien tiba di API Gateway, permintaan tersebut terlebih dahulu mencoba mengambil token dari bucket. Jika token berhasil diambil, permintaan dilewatkan. Jika token tidak berhasil diambil, permintaan masuk ke antrian. Token batch berikutnya diprioritaskan untuk permintaan dalam antrian. Jika antrian penuh, permintaan selanjutnya menerima error 429. Untuk mencegah permintaan masuk ke antrian, Anda dapat mengonfigurasi blockingMode: QUICK_RETURN. Dengan konfigurasi ini, jika permintaan gagal mendapatkan token, sistem segera mengembalikan error 429.

  • Algoritma jendela waktu tetap: algoritma yang digunakan saat menit, jam, atau hari digunakan sebagai satuan waktu. Algoritma ini membatasi jumlah total permintaan yang diterima dalam satuan waktu. Sebagai contoh, batas 1.000 permintaan per menit menentukan bahwa kode 429 dikembalikan untuk permintaan melebihi batas. Hitungan permintaan diatur ulang di awal menit berikutnya.

2.2 Konfigurasikan plugin throttling dasar

Anda dapat mengonfigurasi plugin dalam format JSON atau YAML. Kedua format menggunakan skema yang sama. Anda dapat menggunakan alat konversi yaml ke json untuk mengonversi antar format. Kode berikut menunjukkan templat dalam format YAML.

---
unit: SECOND         # Satuan waktu. Nilai yang valid: SECOND, MINUTE, HOUR, dan DAY.
apiDefault: 1000     # Ambang batas throttling default tingkat API.
controlMode: FIX_WINDOW  # Menentukan bahwa algoritma jendela waktu tetap digunakan ketika satuan waktu adalah detik.
blockingMode: QUICK_RETURN     # Menentukan bahwa kode 429 dikembalikan untuk permintaan yang gagal mendapatkan token saat menggunakan algoritma bucket token.
userDefault: 30      # Opsional. Ambang batas throttling default tingkat pengguna. Jika Anda menetapkan ambang batas ini ke 0, throttling tingkat pengguna tidak dilakukan. Ambang batas throttling tingkat pengguna tidak boleh lebih besar daripada ambang batas throttling tingkat API.
appDefault: 30       # Opsional. Ambang batas throttling default tingkat aplikasi. Jika Anda menetapkan ambang batas ini ke 0, throttling tingkat aplikasi tidak dilakukan. Ambang batas throttling tingkat aplikasi tidak boleh lebih besar daripada ambang batas throttling tingkat pengguna.
specials:            # Opsional. Pengaturan throttling khusus. Anda dapat menetapkan ambang batas throttling untuk aplikasi atau pengguna khusus dalam kebijakan throttling.
  - type: "APP"      # Jenis throttling khusus. Nilai APP menentukan bahwa throttling dilakukan untuk aplikasi khusus berdasarkan AppKey mereka.
    policies:
    - key: 10123123  # ID aplikasi. Anda dapat memperoleh ID aplikasi dari halaman detail aplikasi. Untuk membuka halaman ini, pilih Call API > Apps di panel navigasi sebelah kiri konsol API Gateway dan klik nama aplikasi dalam daftar aplikasi.
      value: 10      # Ambang batas throttling khusus untuk aplikasi. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat pengguna dalam kebijakan throttling.
    - key: 10123123  # ID aplikasi.
      value: 10      # Ambang batas throttling khusus untuk aplikasi. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat pengguna dalam kebijakan throttling.
  - type: "USER"     # Jenis throttling khusus. Nilai USER menentukan bahwa throttling dilakukan untuk akun Alibaba Cloud khusus.
    policies:
    - key: 123455    # ID akun Alibaba Cloud. Anda dapat mengarahkan kursor ke gambar profil di pojok kanan atas konsol Alibaba Cloud untuk memperoleh ID tersebut.
      value: 100     # Ambang batas throttling khusus untuk akun Alibaba Cloud. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat API dalam kebijakan throttling.

2.3 Gunakan dataset plugin bersama dengan plugin throttling dasar

2.3.1 Buat dataset plugin

  1. Masuk ke konsol API Gateway. Di panel navigasi sebelah kiri, klik API Management > Plugin Management. Lalu, klik tab Plugin Datasets.

  2. Di pojok kanan atas, klik Create Dataset. Di kotak dialog yang muncul, masukkan Name untuk dataset tersebut. Atur Type ke TRAFFIC_CONTROL_POLICY. Klik OK untuk membuat dataset.

  3. Buka dataset yang telah Anda buat. Di pojok kanan atas, klik Create Dataset Entry. Di halaman yang muncul, konfigurasikan kunci dan nilai untuk plugin throttling. key adalah AppId atau ID akun Alibaba Cloud. value adalah nilai throttling yang sesuai.

2.3.2 Contoh penggunaan dataset plugin untuk plugin throttling

Plugin throttling dasar mendukung dataset plugin. Anda dapat menggunakan dataset plugin untuk mengonfigurasi ambang batas throttling khusus untuk aplikasi atau akun tertentu. Kode berikut menunjukkan contoh:

---
unit: SECOND         # Satuan waktu. Nilai yang valid: SECOND, MINUTE, HOUR, dan DAY.
apiDefault: 1000     # Ambang batas throttling default tingkat API.
userDefault: 30      # Opsional. Ambang batas throttling default tingkat pengguna. Jika Anda menetapkan ambang batas ini ke 0, throttling tingkat pengguna tidak dilakukan. Ambang batas throttling tingkat pengguna tidak boleh lebih besar daripada ambang batas throttling tingkat API.
appDefault: 30       # Opsional. Ambang batas throttling default tingkat aplikasi. Jika Anda menetapkan ambang batas ini ke 0, throttling tingkat aplikasi tidak dilakukan. Ambang batas throttling tingkat aplikasi tidak boleh lebih besar daripada ambang batas throttling tingkat pengguna.
specials:            # Opsional. Pengaturan throttling khusus. Anda dapat menetapkan ambang batas throttling untuk aplikasi atau pengguna khusus dalam kebijakan throttling.
  - type: "APP"      # Jenis throttling khusus. Nilai APP menentukan bahwa throttling dilakukan untuk aplikasi khusus berdasarkan AppKey mereka.
    policyDatasetId: 87 b65008e92541938XXXXXXXX6eda5 # ID dataset plugin.
    policies:
    - key: 10123123  # ID aplikasi. Anda dapat memperoleh ID aplikasi dari halaman detail aplikasi. Untuk membuka halaman ini, pilih Call API > Apps di panel navigasi sebelah kiri konsol API Gateway dan klik nama aplikasi dalam daftar aplikasi.
      value: 10      # Ambang batas throttling khusus untuk aplikasi. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat pengguna dalam kebijakan throttling.
    - key: 10123123  # ID aplikasi.
      value: 10      # Ambang batas throttling khusus untuk aplikasi. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat pengguna dalam kebijakan throttling.
  - type: "USER"     # Jenis throttling khusus. Nilai USER menentukan bahwa throttling dilakukan untuk akun Alibaba Cloud khusus.
    policyDatasetId: 87 b65008eXXXXXXXXXXXXa236eda5 # ID dataset plugin.
    policies:
    - key: 123455    # ID akun Alibaba Cloud. Anda dapat mengarahkan kursor ke gambar profil di pojok kanan atas konsol Alibaba Cloud untuk memperoleh ID tersebut.
      value: 100     # Ambang batas throttling khusus untuk akun Alibaba Cloud. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat API dalam kebijakan throttling.
Penting

Dataset plugin hanya didukung oleh plugin throttling dasar. Plugin throttling berbasis parameter tidak mendukung dataset plugin.

3. Konfigurasi throttling berbasis parameter

Throttling berbasis parameter memungkinkan Anda mengontrol lalu lintas berdasarkan parameter permintaan pemanggil dan eksekusi kondisional. Konfigurasi throttling berbasis parameter berikut didukung:

  • Mendukung throttling pada tingkat detik, menit, jam, atau hari.

  • Memungkinkan Anda menetapkan kondisi berdasarkan parameter permintaan dan parameter sistem untuk mengeksekusi aturan throttling yang berbeda.

  • Memungkinkan Anda menyiapkan throttling menggunakan satu parameter atau kombinasi beberapa parameter.

  • Memungkinkan Anda menetapkan cakupan throttling ke API atau plugin.

3.1 Memulai cepat dengan throttling berbasis parameter

Pertimbangkan skenario di mana Anda ingin menerapkan aturan throttling berikut untuk setiap alamat IP klien. Jika pengguna melakukan autentikasi dengan kunci yang memiliki AppId 10001, tetapkan throttle ke 100 permintaan/detik. Untuk semua kasus lainnya, tetapkan throttle ke 10 permintaan/detik.

Untuk skenario ini, konfigurasikan plugin sebagai berikut. Contoh ini menggunakan yaml untuk mengonfigurasi plugin.

---
scope: "PLUGIN"
#
# Throttling ini bergantung pada dua parameter sistem:
# 1. AppId yang digunakan untuk tanda tangan pengguna, diperoleh dari parameter sistem CaAppId.
# 2. IP Klien sumber pengguna, diperoleh dari parameter sistem CaClientIp.
parameters:
  AppId: "System: CaAppId"
  ClientIP: "System: CaClientIp"
rules:
  # Kebijakan throttling pertama. Berlaku ketika `AppId` adalah `10001`. Membatasi setiap ClientIP hingga `100/detik`.
  - name: "Vip"
    condition: "$AppId = 10001"
    byParameters: "ClientIP"
    limit: 100
    period: SECOND
  # Kebijakan throttling kedua bernama `PerClientIP`. Membatasi setiap ClientIP hingga `10/detik`.
  - name: "PerClientIP"
    byParameters: "ClientIP"
    bypassEmptyValue: true   # Ketika suatu aturan dalam `rules` tidak memiliki kondisi dan menggunakan parameter byParameters sebagai kondisi, aturan ini tidak berlaku jika parameternya kosong atau nilai kosong dilewatkan. Sebagai gantinya, kebijakan throttling default digunakan.
    limit: 10
    period: SECOND

3.2 Konfigurasikan plugin throttling berbasis parameter

Anda dapat menggunakan format yaml atau json yang setara untuk mengonfigurasi metadata plugin.

---
scope: "PLUGIN"                # Ruang lingkup plugin throttling. Nilai valid: PLUGIN dan API.
blockingMode: QUICK_RETURN     # Menentukan bahwa permintaan tanpa token tidak masuk antrian. Sebagai gantinya, kode 429 dikembalikan. Untuk informasi lebih lanjut, lihat deskripsi bidang berikut.
controlMode: FIX_WINDOW  # Menentukan bahwa algoritma jendela waktu tetap digunakan saat satuan waktu adalah detik.
defaultLimit: 100              # Nilai throttling default, jika nilai default ditentukan.
defaultPeriod: SECOND          # Satuan waktu default untuk throttling.
defaultRetryAfterBySecond: 60  # Mengembalikan header Retry-After, yang memberikan saran tentang berapa lama harus menunggu sebelum permintaan berikutnya.
defaultErrorMessage: "Dibatasi oleh 100/SECOND"
parameters:                    # Parameter yang dapat digunakan untuk throttling.
  clientIp: "System:CaClientIp"
  userId: "Token:userId"
rules:
  - name: "ByClientIp"
    byParameters: "clientIp"
    condition: "$clientIp !in_cidr '61.7.XX.XX/24'"
    limit: 10
    period: MINUTE
    retryAfterBySecond: 60    # Mengembalikan header Retry-After, yang memberikan saran tentang berapa lama harus menunggu sebelum permintaan berikutnya.
    errorMessage: "Dibatasi oleh 10/MINUTE dari ${clientIp}"
  - name: "Maksimal 10 permintaan per menit diizinkan untuk setiap pengguna, kecuali administrator."
    byParameters: "clientIp"
    condition: "$userId !like 'admin%'"
    limit: 10
    period: MINUTE
    retryAfterBySecond: 60    # Mengembalikan header Retry-After, yang memberikan saran tentang berapa lama harus menunggu sebelum permintaan berikutnya.
  - name: "Maksimal 10 permintaan per menit diizinkan untuk setiap alamat IP klien."
    byParameters: "clientIp"
    condition: "$clientIp in_cidr '67.0.XX.XX/8'"
    limit: 10
    period: MINUTE
  - name: "Maksimal 15 permintaan per menit diizinkan untuk setiap pengguna."
    condition: "$userId !like 'admin%'"
    limit: 15
    period: MINUTE
    byParameters: "clientIp"

Bidang:

  • scope (Wajib): Cakupan plugin throttling. Nilai yang valid adalah API dan PLUGIN. Jika beberapa API dikaitkan dengan plugin yang sama, nilai scope memengaruhi cakupan kebijakan throttling. Misalnya, jika kebijakan diatur ke 10 panggilan/detik:

    • Jika nilainya API, kebijakan throttling berlaku untuk setiap API secara terpisah. Dalam contoh ini, batas untuk setiap API adalah 10 panggilan/detik.

    • Jika nilainya PLUGIN, semua API yang dikaitkan dengan plugin ini berbagi batas tersebut. Jika plugin dalam contoh ini dikaitkan dengan sekelompok API, batas lalu lintas total untuk kelompok tersebut adalah 10 panggilan/detik.

  • parameters (Wajib): Daftar parameter yang terlibat dalam throttling. Untuk informasi lebih lanjut, lihat deskripsi di Gunakan parameter dan ekspresi kondisional.

  • rules (Opsional): Daftar kebijakan throttling. Jika defaultLimit dan period tidak diatur, bidang ini tidak boleh kosong. Setiap kebijakan throttling berisi bidang-bidang berikut:

    • name (Wajib): Nama kebijakan throttling. Nilainya harus berupa string yang valid yang cocok dengan [A-Za-z0-9_-]+ dan harus unik dalam plugin yang sama.

    • byParameters (Wajib): Parameter throttling. Jika Anda menggunakan kombinasi beberapa parameter, pisahkan dengan koma (,). Misalnya, ClientIP berarti throttling dilakukan secara terpisah untuk setiap nilai ClientIP. UserId,Action berarti throttling dilakukan secara terpisah untuk nilai gabungan kedua parameter ini.

    • bypassEmptyValue (Opsional): Jika diatur ke true, aturan ini tidak berlaku jika parameter `byParameters` kosong atau nilai kosong dilewatkan. Ini hanya berlaku ketika aturan tidak memiliki `condition` dan menggunakan `byParameters` sebagai kondisi. Dalam kasus ini, kebijakan throttling default digunakan sebagai gantinya.

    • condition (Opsional): Jika kondisi ditetapkan, kebijakan throttling ini hanya dieksekusi jika kondisi terpenuhi.

    • limit (Wajib): Nilai throttling. Ini harus berupa bilangan bulat positif. Nilai -1 berarti tidak ada throttling yang diterapkan jika kondisi ini terpenuhi.

    • period (Wajib): Periode throttling. Nilai yang valid: SECOND, MINUTE, HOUR, atau DAY.

    • errorMessage (Opsional): Pesan kesalahan kustom. Anda dapat mendefinisikannya sebagai templat. Parameter yang didefinisikan dalam parameters dapat dirujuk menggunakan format ${Name}.

    • retryAfterBySecond (Opsional): Mengembalikan header Retry-After, yang menyarankan berapa lama harus menunggu sebelum membuat permintaan berikutnya.

  • defaultLimit (Opsional): Nilai throttling default. Ini harus berupa bilangan bulat positif.

  • defaultPeriod (Opsional): Periode throttling. Nilai yang valid: SECOND, MINUTE, HOUR, atau DAY.

  • defaultErrorMessage (Opsional): Pesan kesalahan kustom. Saat pesan kesalahan kustom dikonfigurasi, header X-Ca-Error-Message yang dikembalikan menggunakan pesan kustom tersebut. Pesan ini tidak dapat menggunakan parameter.

  • defaultRetryAfterBySecond (Opsional): Header Retry-After default yang dikembalikan, yang menyarankan berapa lama harus menunggu sebelum membuat permintaan berikutnya.

  • blockingMode (Opsional): API Gateway menggunakan algoritma bucket token standar untuk mengimplementasikan throttling. Daftar berikut menjelaskan nilai bidang dan algoritmanya.

    • QUEUE (Default): Algoritma bucket token memiliki dua konsep: bucket token dan antrian tunggu. Mesin API Gateway secara berkala menambahkan token ke bucket token. Saat permintaan klien tiba di API Gateway, permintaan tersebut terlebih dahulu mencoba mengambil token dari bucket. Jika token berhasil diambil, permintaan dilewatkan. Jika token tidak berhasil diambil, permintaan masuk ke antrian. Token batch berikutnya diprioritaskan untuk permintaan dalam antrian. Jika antrian penuh, permintaan selanjutnya menerima error 429.

    • QUICK_RETURN: Jika Anda menggunakan nilai ini, permintaan tidak menunggu token di antrian. Sebagai gantinya, kode 429 dikembalikan.

  • controlMode: Menentukan algoritma throttling yang digunakan ketika satuan waktu adalah `SECOND`. Nilai default adalah TOKEN_BUCKET (algoritma bucket token). Anda dapat mengaturnya ke FIX_WINDOW (algoritma jendela waktu tetap).

3.3 Parameter yang didukung oleh plugin throttling

Tabel berikut menjelaskan parameter yang didukung oleh plugin throttling.

Nama Lokasi

Ruang Lingkup

Deskripsi

Method

Permintaan

Metode permintaan HTTP (huruf kapital), seperti GET atau POST.

Path

Permintaan

Jalur permintaan HTTP lengkap, seperti /path/to/query.

Header

Permintaan

Gunakan Header:{Name} untuk mendapatkan nilai pertama dari header HTTP bernama {Name}.

Query

Permintaan

Gunakan Query:{Name} untuk mendapatkan nilai pertama dari parameter bernama {Name} dalam string kueri.

Form

Permintaan

Gunakan Form:{Name} untuk mendapatkan nilai pertama dari parameter bernama {Name} dalam formulir permintaan.

Host

Permintaan

Gunakan Host:{Name} untuk mendapatkan parameter templat nama domain wildcard yang cocok.

Parameter

Permintaan

Gunakan Parameter:{Name} untuk mendapatkan nilai pertama dari parameter API kustom bernama Name.

Sistem

Permintaan

Gunakan System:{Name} untuk mendapatkan nilai parameter sistem bernama {Name}.

Token

Permintaan

Dalam skenario otorisasi jwt dan oauth2, gunakan Token:{Name} untuk mendapatkan nilai klaim bernama {Name} dalam token.

3.4 Aturan Eksekusi

API Gateway melakukan throttling berbasis parameter menggunakan aturan berikut:

  • Plugin menggunakan konfigurasi parameters untuk mengambil nilai parameter dari konteks permintaan.

  • Semua aturan yang condition-nya bernilai true atau yang tidak memiliki konfigurasi condition dieksekusi.

  • Jika beberapa aturan yang cocok dalam daftar memiliki konfigurasi byParameters yang sama, hanya aturan pertama dalam urutan konfigurasi yang dieksekusi. Aturan lainnya tidak berlaku.

4. Contoh

4.1 Throttling Dasar

Throttling dasar mendukung throttling tingkat API, berbasis AppKey, dan tingkat pengguna.

---
unit: SECOND           # Satuan waktu default untuk throttling. Nilai yang valid: SECOND, MINUTE, HOUR, dan DAY.
apiDefault: 50         # Ambang batas throttling default tingkat API.
defaultRetryAfterBySecond: 60  # Secara default, header Retry-After dikembalikan, yang memberikan saran berapa lama harus menunggu sebelum permintaan berikutnya.
appDefault: 20         # Opsional. Ambang batas throttling default tingkat aplikasi. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat pengguna.
userDefault: 30        # Opsional. Ambang batas throttling default tingkat pengguna. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat API.
specials:              # Opsional. Pengaturan throttling khusus. Anda dapat menetapkan ambang batas throttling untuk aplikasi atau pengguna khusus dalam kebijakan throttling.
  - type: "APP"        # Jenis throttling khusus. Nilai APP menunjukkan bahwa throttling dilakukan untuk aplikasi khusus berdasarkan AppKey mereka.
    policies:
      - key: 10001     # ID aplikasi. Anda dapat memperoleh ID aplikasi dari halaman detail aplikasi. Untuk membuka halaman ini, pilih Call API > Apps di panel navigasi sebelah kiri konsol API Gateway dan klik nama aplikasi dalam daftar aplikasi.
        value: 3       # Ambang batas throttling khusus untuk aplikasi. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat pengguna.
      - key: 10003
        value: 40
  - type: "USER"       # Jenis throttling khusus. Nilai USER menunjukkan bahwa throttling dilakukan untuk akun Alibaba Cloud khusus.
    policies:
      - key: 102       # ID akun Alibaba Cloud. Anda dapat mengarahkan kursor ke gambar profil di pojok kanan atas Konsol Manajemen Alibaba Cloud untuk memperoleh ID tersebut.
        value: 10      # Ambang batas throttling khusus untuk akun Alibaba Cloud. Ambang batas ini tidak boleh lebih besar daripada ambang batas throttling tingkat API.
      - key: 233
        value: 35

4.2 Throttling Berbasis Parameter

Contoh ini menunjukkan cara mengonfigurasi kebijakan pembatasan laju.

  • Setiap IP sumber diizinkan 100 panggilan/menit.

  • Jika IP klien berada dalam rentang 58.66.XX.XX/24, akses tidak dibatasi.

  • Untuk IP klien dalam rentang 63.0.XX.XX dan 73.0.XX.XX/24, akses dibatasi hingga 5 panggilan/hari.

---
scope: API             # Ruang lingkup throttling. Nilai valid: API dan PLUGIN.
parameters:            # Parameter yang digunakan untuk throttling. Throttling hanya dilakukan berdasarkan parameter ClientIP. Anda dapat memperoleh nilai parameter ini dari parameter sistem CaClientIp.
  ClientIp: "System:CaClientIp"
rules:
  - name: whitelist    # Kebijakan daftar putih. Throttling tidak dilakukan untuk alamat IP klien yang memenuhi kondisi yang ditentukan dalam kebijakan ini.
    condition: "$ClientIp in_cidr '58.66.XX.XX/24'"
    limit: -1          # Nilai -1 menunjukkan bahwa throttling tidak dilakukan.
  - name: banList      # Kebijakan throttling khusus. Jika alamat IP klien memenuhi kondisi yang ditentukan dalam kebijakan ini, maksimal lima panggilan API per hari diizinkan untuk alamat IP klien tersebut.
    condition: "$ClientIp in_cidr '63.0.XX.XX' or $ClientIp in_cidr '73.0.XX.XX/24'"  
    byParameters: "ClientIp"
    limit: 5
    period: DAY
  - name: 100perIp     # Kebijakan throttling default. Maksimal 100 panggilan API per menit diizinkan untuk setiap alamat IP klien.
    byParameters: "ClientIp"
    limit: 100
    period: MINUTE     # Satuan waktu. Nilai valid: SECOND, MINUTE, HOUR, dan DAY.

4.3 Konfigurasi Anti-Serangan CC

Bagian ini memberikan contoh konfigurasi plugin throttling untuk mencegah serangan Challenge Collapsar (CC).

  • Setiap IP sumber diizinkan 3 panggilan/detik.

  • Jika IP sumber melebihi batas 3 panggilan/detik, akses diblokir selama 10 detik.

---
scope: API             # Ruang lingkup throttling. Nilai valid: API dan PLUGIN.
defaultLimit: 3000        # Ambang batas throttling default.
defaultPeriod: SECOND     # Satuan waktu default untuk throttling.
defaultRetryAfterBySecond: 60  # Secara default, header Retry-After dikembalikan, yang memberikan saran tentang berapa lama harus menunggu sebelum permintaan berikutnya.
parameters:        # Parameter yang digunakan untuk throttling. Throttling hanya dilakukan berdasarkan parameter ClientIP. Anda dapat memperoleh nilai parameter ini dari parameter sistem CaClientIp.
  clientIp: "system:CaClientIp"
rules:
  -name: "Setiap alamat IP klien dapat memulai tiga panggilan API per detik. Jika ambang ini dilampaui, alamat IP klien diblokir selama 10 detik."
    byParameters: "clientIp"
    limit: 3
    period: SECOND
    blockingPeriodBySecond: 10     # Hanya efektif untuk instance khusus.

5. Kode Kesalahan

Kode Kesalahan

Kode Status HTTP

Pesan Kesalahan

Deskripsi

T429ID

429

Dibatasi oleh INNER DOMAIN Flow Control, ${Domain} adalah domain uji, hanya 1000 permintaan per hari

Saat Anda menggunakan nama domain tingkat kedua default untuk akses, batasnya adalah 1.000 panggilan/hari (100 panggilan/hari untuk wilayah di luar Tiongkok dan di Tiongkok (Hong Kong)). Ikat nama domain kustom untuk menghapus batas ini.

T429IN

429

Dibatasi oleh INSTANCE Flow Control

Ambang batas throttling untuk instans saat ini terpicu.

T429GR

429

Dibatasi oleh GROUP Flow Control

Ambang batas throttling untuk grup saat ini terpicu.

T429PA

429

Dibatasi oleh API Flow Control

Throttling API default pada plugin terpicu.

T429PR

429

Dibatasi oleh PLUGIN Flow Control

Aturan throttling khusus dalam plugin terpicu.

6. Batasan

  • Maksimal 16 parameter dapat didefinisikan.

  • Ekspresi tunggal tidak boleh melebihi 512 karakter.

  • Metadata plugin tunggal tidak boleh melebihi 50 KB dalam ukuran.

  • Setiap plugin dapat memiliki maksimal 16 rules.

  • Setiap rule dapat memiliki maksimal tiga parameter dalam byParameters.

  • Jika parameter throttling memiliki banyak nilai unik, misalnya saat Anda menggunakan throttling tingkat hari berdasarkan IP sumber, sistem dapat melepaskan beberapa catatan throttling untuk mengelola penggunaan memori. Untuk instans arsitektur tanpa server, plugin throttling berbasis parameter memungkinkan maksimal 1.000 nilai parameter berbeda. Untuk instans khusus, plugin memungkinkan maksimal 100.000 nilai parameter berbeda.