Kebijakan throttling mengontrol lalu lintas ke API LLM berdasarkan konsumsi token, jumlah permintaan, dan konkurensi. Aturan dapat dikonfigurasi berdasarkan consumer, header permintaan, parameter kueri, cookie, IP client, atau nama model. Batas global menyediakan perlindungan cadangan di seluruh API terhadap kelebihan beban dan penyalahgunaan.
Fitur
Cegah kelebihan beban sumber daya: Batasi permintaan berdasarkan consumer, header, parameter kueri, cookie, IP client, atau nama model untuk mencegah overload. Gabungkan dengan kebijakan caching guna meningkatkan performa.
Kontrol lalu lintas dinamis: Terapkan throttling per detik, menit, jam, atau hari untuk menjaga stabilitas dalam kondisi konkurensi tinggi.
Beberapa aturan pencocokan: Mendukung exact match, prefix match, regex match, dan any match untuk penargetan aturan yang fleksibel.
Beberapa mode throttling: Throttle berdasarkan konsumsi token, jumlah permintaan, atau konkurensi.
Kontrol model detail halus: Tetapkan ambang batas berbeda per nama model untuk melindungi sumber daya bernilai tinggi.
Batas global: Terapkan batas cadangan di seluruh API pada total konsumsi token, jumlah permintaan, dan konkurensi.
Cegah serangan berbahaya: Throttle consumer, header, parameter kueri, cookie, atau IP client tertentu untuk memblokir crawler dan penyalahgunaan otomatis.
Kasus penggunaan
Skenario konkurensi tinggi: Selama promosi e-commerce, batasi konsumsi token per periode waktu untuk mencegah panggilan frekuensi tinggi yang berbahaya serta memastikan stabilitas dan keadilan.
Panggilan layanan AI: Throttle panggilan ke API LLM Anda untuk mencegah penurunan layanan atau crash sistem akibat lonjakan lalu lintas.
Sistem multi-tenant: Tetapkan kuota terpisah per tenant untuk memastikan keadilan dan isolasi sumber daya.
Kontrol model detail halus: Tetapkan batas per model (misalnya, kuota berbeda untuk
qwen-maxdanqwen-plus) untuk melindungi sumber daya bernilai tinggi.Proteksi lalu lintas global: Batasi total konsumsi token, jumlah permintaan, dan konkurensi di seluruh API.
Proteksi terhadap serangan berbahaya: Lindungi dari crawler, Serangan DDoS, dan penyalahgunaan API.
Prosedur
Buka halaman Instances di AI Gateway Console. Di bilah menu atas, pilih wilayah tempat instans target Anda berada, lalu klik instance ID target.
Di panel navigasi sebelah kiri, klik Model API, lalu klik API Name target untuk membuka halaman API Details.
Klik Policies and Plug-ins, lalu aktifkan sakelar Throttling dan konfigurasikan parameter terkait.
Catatan Satu permintaan dapat mencocokkan maksimal 10 aturan secara bersamaan.
Kebijakan throttling
Setiap aturan terdiri dari Condition, Throttling rule, Time window, Limit, dan Limit unit. Seret aturan untuk mengubah urutannya. Klik Add untuk membuat aturan baru.
Parameter | Deskripsi |
Throttling | Mengaktifkan atau menonaktifkan kebijakan throttling. Secara default nonaktif. |
Condition | Dimensi untuk throttling. Opsi: By consumer, By request header, By request query, By request cookie, By client IP, dan By model. |
Throttling rules | Bergantung pada kondisi yang dipilih, masukkan aturan pencocokan, nama parameter, dan konten pencocokan. Setiap dimensi dijelaskan di bawah ini. |
Time window | Jendela waktu untuk throttling: Every second, Every minute, Every hour, atau Every day. |
Limit | Ambang batas throttling. |
Limit unit | Unit pengukuran: token, request count, atau concurrency. |
By consumer
Throttle permintaan berdasarkan identitas consumer. Ideal untuk sistem multi-tenant.
Form items: Condition (By consumer) → Matching rule (exact match/prefix match/regex match/any match) → Consumer selection → Time window → Limit + Limit unit
Consumer selection: Pilih dari consumer yang sudah ada atau klik Create Consumer untuk menambahkan satu. Jika Anda memilih
any match, tidak diperlukan consumer spesifik.Contoh: Batasi setiap consumer hingga 1.000 token per menit.
Penting Untuk mengonfigurasi throttling berdasarkan consumer, Anda harus terlebih dahulu mengaktifkan consumer authentication.
By request header
Throttle permintaan berdasarkan bidang tertentu dalam header permintaan.
Form items: Condition (By request header) → Parameter name (Header field name) → Matching rule (exact match/prefix match/regex match/any match) → Match content → Time window → Limit + Limit unit
Parameter name: Wajib diisi. Masukkan nama bidang header yang akan dicocokkan.
Match content: Bidang ini tidak diperlukan jika Anda memilih
any match.Contoh: Untuk permintaan dengan header
x-user-levelbernilaibeta, tetapkan batas 100 token per menit.
By request query
Throttle permintaan berdasarkan parameter kueri dalam URL permintaan.
Form items: Condition (By request query) → Parameter name (Query parameter name) → Matching rule (exact match/prefix match/regex match/any match) → Match content → Time window → Limit + Limit unit
Parameter name: Wajib diisi. Masukkan nama parameter kueri yang akan dicocokkan.
Match content: Bidang ini tidak diperlukan jika Anda memilih
any match.Contoh: Untuk permintaan dengan parameter kueri
user_id=1, tetapkan batas 100 token per menit.
By request cookie
Throttle permintaan berdasarkan bidang tertentu dalam cookie permintaan.
Form items: Condition (By request cookie) → Parameter name (Cookie field name) → Matching rule (exact match/prefix match/regex match/any match) → Match content → Time window → Limit + Limit unit
Parameter name: Wajib diisi. Masukkan nama bidang cookie yang akan dicocokkan.
Match content: Bidang ini tidak diperlukan jika Anda memilih
any match.Contoh: Untuk permintaan yang berisi cookie dengan pengenal tertentu, tetapkan batas 100 token per menit.
By client IP
Throttle permintaan berdasarkan IP client. Mendukung IP individual maupun rentang IP.
Form items: Condition (By client IP) → IP address → Limit + Limit unit
IP address: Masukkan alamat IP (misalnya,
192.168.1.1) atau rentang CIDR (misalnya,192.168.1.0/24). Untuk mencocokkan semua IP client, masukkan0.0.0.0/0.Contoh: Tetapkan konkurensi maksimum sebesar 50 untuk setiap IP client.
Catatan Throttling berdasarkan IP client memiliki konfigurasi yang disederhanakan dan tidak memerlukan pemilihan aturan pencocokan atau jendela waktu.
By model
Tetapkan ambang batas throttling terpisah untuk nama model tertentu. Cocok untuk layanan yang menggunakan beberapa model.
Form items: Condition (By model) → Matching rule (tetap pada exact match) → Model name → Limit + Limit unit
Model name: Wajib diisi. Masukkan nama model target yang akan di-throttle.
Limit unit: Mendukung token, request count, dan concurrency.
Contoh: Untuk model
qwen-max, tetapkan batas 500 token per menit dan konkurensi maksimum 10.
Catatan Throttling berdasarkan model selalu menggunakan exact match. Jika Anda memerlukan pencocokan model yang lebih fleksibel, seperti prefix atau regex matching, gunakan kondisi "By request header" dan tentukan manual nama parameter sebagai x-higress-llm-model.Batas global
Batas global adalah kebijakan cadangan yang berlaku untuk seluruh API, terlepas dari aturan berbasis kondisi.
Cara mengaktifkan: Di bagian Global limit, centang kotak Enable.
Form items: Time window (Every second/Every minute/Every hour/Every day) → Limit + Limit unit (token/request count/concurrency)
Tambahkan beberapa aturan: Klik Add untuk membuat beberapa aturan batas global dengan mode throttling berbeda.
Contoh: Untuk seluruh API, tetapkan maksimum 10.000 token per menit, 100 permintaan per menit, dan konkurensi maksimum 20.
Catatan Batas global adalah kebijakan cadangan yang melengkapi aturan standar dan dapat digunakan secara bersamaan. Throttling dipicu jika lalu lintas mencocokkan salah satu aturan.
Konfirmasi konfigurasi Anda dan klik Save.
Aturan pencocokan
Kondisi By consumer, By request header, By request query, dan By request cookie mendukung empat aturan pencocokan berikut. Prioritas: exact match > prefix match > regex match > any match.
Aturan pencocokan | Deskripsi | Contoh |
Exact match | Nilai harus persis sama. | Header |
Prefix match | Nilai harus diawali dengan awalan yang ditentukan. | Header |
Regex match | Nilai harus sesuai dengan ekspresi reguler yang ditentukan. | Header |
Any match | Mencocokkan nilai apa pun untuk dimensi yang diberikan. Tidak diperlukan konten pencocokan. | Berlaku untuk consumer apa pun. |
Catatan Jika Anda mengonfigurasi beberapa aturan, permintaan akan di-throttle jika mencocokkan salah satu aturan tersebut. Kondisi By client IP dan By model menggunakan metode pencocokan tetap dan tidak memerlukan pemilihan aturan manual.
Unit batas dan mode
Untuk setiap aturan throttling, pilih unit batas yang sesuai dengan metode pengukuran berbeda:
Unit batas | Deskripsi | Kondisi yang berlaku |
Token | Mengukur total token inbound dan outbound yang dikonsumsi. | Semua kondisi |
Request count | Mengukur jumlah total permintaan. | Semua kondisi |
Concurrency | Mengukur jumlah permintaan simultan. | Semua kondisi |
Kebijakan throttling mendukung jendela waktu berikut, yang digunakan bersama unit batas:
Jendela waktu | Pembatasan kecepatan token | Throttling jumlah permintaan | Throttling konkurensi |
Every second | Maksimum token per detik. | Maksimum permintaan per detik. | — |
Every minute | Maksimum token per menit. | Maksimum permintaan per menit. | — |
Every hour | Maksimum token per jam. | Maksimum permintaan per jam. | — |
Every day | Maksimum token per hari. | Maksimum permintaan per hari. | — |
(No time window) | — | — | Maksimum permintaan simultan. |
Pembatasan laju berbasis jendela waktu menggunakan jendela waktu tetap dengan Time to Live (TTL) tertentu untuk penghitungan. Untuk metode ini, setiap kombinasi dimensi pembatasan laju dan nilai pencocokan berkorespondensi dengan kunci pembatasan laju independen. Pengatur waktu untuk jendela dimulai saat data valid pertama kali dicatat untuk kuncinya. Jendela ini tidak dibagi berdasarkan batas waktu alami, seperti pukul 01.00 hingga 02.00, dan bukan jendela geser. Jendela secara otomatis direset setelah kedaluwarsa. Permintaan berikutnya tidak memperbarui waktu kedaluwarsa jendela saat ini. Misalnya, jika data pertama untuk kunci dengan pembatasan laju per jam dicatat pada pukul 01:23:10, jendelanya direset sekitar pukul 02:23:10, bukan pukul 02:00:00.
Catatan Throttling konkurensi tidak memerlukan jendela waktu. Anda dapat langsung menetapkan konkurensi maksimum.
Contoh konfigurasi
Contoh 1: Throttle berdasarkan token consumer dan konkurensi IP
Konfigurasikan dua aturan: batasi setiap consumer hingga 1.000 token per menit dan tetapkan konkurensi maksimum untuk setiap IP client sebesar 50.
No. | Condition | Matching rule | Parameter name/match content | Time window | Limit | Limit unit |
1 | By consumer | any match | — | Every minute | 1000 | token |
2 | By client IP | — | 0.0.0.0/0 | — | 50 | concurrency |
Contoh 2: Throttle berdasarkan header permintaan
Tetapkan aturan throttling berbeda untuk nilai header berbeda:
No. | Condition | Parameter name | Matching rule | Match content | Time window | Limit | Limit unit |
1 | By request header | x-user-level | exact match | beta | Every minute | 100 | token |
2 | By request header | x-user-level | prefix match | vip | Every hour | 5000 | token |
3 | By request header | x-app-id | any match | — | Every minute | 50 | request count |
Contoh 3: Batasi berdasarkan nama model
Tetapkan batas berbeda untuk model berbeda: batasi qwen-max hingga 500 token per menit dan konkurensi maksimum 10, serta batasi qwen-plus hingga 2.000 token per menit.
No. | Condition | Matching rule | Model name | Time window | Limit | Limit unit |
1 | By model | exact match | qwen-max | Every minute | 500 | token |
2 | By model | exact match | qwen-plus | Every minute | 2000 | token |
3 | By model | exact match | qwen-max | — | 10 | concurrency |
Contoh 4: Gabungkan batas global dan batas consumer
Selain batas berbasis consumer, aktifkan batas global sebagai kebijakan cadangan:
Kebijakan throttling (Aturan Standar):
No. | Condition | Matching rule | Time window | Limit | Limit unit |
1 | By consumer | any match | Every minute | 1000 | token |
Global Limit (Enable checkbox selected):
No. | Time window | Limit | Limit unit |
1 | Every minute | 10000 | token |
2 | Every minute | 100 | request count |
3 | — | 20 | concurrency |
Catatan Batas global adalah kebijakan cadangan yang melengkapi aturan standar. Harus diaktifkan dan dikonfigurasi secara terpisah.
Contoh 5: Aturan multidimensi campuran
Konfigurasikan aturan throttling berdasarkan berbagai kondisi secara bersamaan:
No. | Condition | Parameter name | Matching rule | Match content/IP/model name | Time window | Limit | Limit unit |
1 | By consumer | — | exact match | consumer-001 | Every minute | 500 | token |
2 | By request header | x-user-level | prefix match | vip | Every hour | 10000 | token |
3 | By request query | user_id | regex match | ^[0-9]+$ | Every minute | 200 | request count |
4 | By request cookie | session | any match | — | Every minute | 100 | request count |
5 | By client IP | — | — | 192.168.1.0/24 | — | 30 | concurrency |
6 | By model | — | exact match | qwen-max | Every minute | 1000 | token |
FAQ
T: Berapa jumlah maksimum aturan throttling yang dapat saya konfigurasikan?
J: Satu permintaan dapat mencocokkan hingga 10 aturan secara bersamaan. Gabungkan aturan lintas dimensi sesuai kebutuhan, tetapi semakin sedikit aturan akan menghasilkan performa lebih baik.
T: Bagaimana interaksi antara beberapa aturan?
J: Aturan menggunakan logika OR—throttling dipicu ketika salah satu aturan cocok. Aturan dengan kondisi dan kunci pencocokan yang sama digabung menjadi satu grup aturan.
T: Apakah saya dapat menggunakan batas global dan aturan throttling standar secara bersamaan?
J: Ya. Batas global adalah cadangan yang berlaku untuk seluruh API tanpa membedakan kunci, sedangkan aturan standar memberikan kontrol detail halus per dimensi. Throttling dipicu jika salah satu batas terlampaui.
T: Apa perbedaan antara throttling berdasarkan model dan berdasarkan header permintaan?
J: Throttling berdasarkan model secara otomatis dikonversi menjadi exact match pada header x-higress-llm-model. Untuk pencocokan prefix atau regex, gunakan "By request header" dengan nama parameter x-higress-llm-model.
T: Apakah saya dapat menggabungkan unit batas token, jumlah permintaan, dan konkurensi?
J: Ya. Tambahkan beberapa aturan untuk kondisi yang sama dengan unit batas berbeda (misalnya, batas token per menit dan batas konkurensi maksimum untuk satu model). Mereka dihitung secara independen, dan throttling dipicu jika salah satu batas tercapai.
T: Mengapa tidak ada opsi aturan pencocokan dan jendela waktu saat throttling berdasarkan IP client?
J: Throttling IP client disederhanakan—masukkan alamat IP atau rentangnya dan sistem akan menangani pencocokan secara otomatis. Untuk menerapkan batas ke semua IP client, masukkan 0.0.0.0/0.
T: Apakah urutan aturan memengaruhi perilaku throttling?
J: Aturan mendukung pengurutan dengan drag-and-drop. Namun, karena aturan menggunakan logika OR (throttling dipicu jika salah satu aturan cocok), urutan tidak memengaruhi perilaku.
T: Berapa lama waktu yang dibutuhkan agar konfigurasi throttling yang diperbarui berlaku?
J: Perubahan biasanya berlaku dalam hitungan detik setelah sistem mendorong aturan baru ke bidang data gateway.
T: Seberapa akurat Pembatasan kecepatan dalam arsitektur terdistribusi?
J: Dalam sistem terdistribusi, penghitungan throttling mungkin memiliki sedikit penyimpangan. Jumlah permintaan yang diizinkan sebenarnya dapat berbeda dari batas yang dikonfigurasi tergantung pada volume permintaan, laju, dan latensi backend.