Mulai cepat: Mengatur batas laju permintaan
Catatan
Azure Spring Apps adalah nama baru untuk layanan Azure Spring Cloud. Meskipun layanan memiliki nama baru, Anda akan melihat nama lama di beberapa tempat untuk sementara saat kami berupaya memperbarui aset seperti cuplikan layar, video, dan diagram.
Artikel ini berlaku untuk:❌ Basic/Standard ✔️ Enterprise
Mulai cepat ini menunjukkan kepada Anda cara mengatur batas tarif permintaan dengan menggunakan Spring Cloud Gateway pada paket Azure Spring Apps Enterprise.
Pembatasan tarif memungkinkan Anda menghindari masalah yang muncul dengan lonjakan lalu lintas. Saat Anda menetapkan batas laju permintaan, aplikasi Anda dapat menolak permintaan yang berlebihan. Konfigurasi ini membantu Anda meminimalkan kesalahan pembatasan dan memprediksi throughput dengan lebih akurat.
Prasyarat
- Akun Azure dengan langganan aktif. Buat akun secara gratis.
- Pahami dan penuhi bagian Persyaratan paket Enterprise di Marketplace Azure.
- Azure CLI versi 2.45.0 atau yang lebih tinggi.
- Git.
- jq
- Ekstensi paket Azure Spring Apps Enterprise. Gunakan perintah berikut untuk menghapus versi sebelumnya dan menginstal ekstensi paket Enterprise terbaru. Jika sebelumnya Anda menginstal ekstensi
spring-cloud
, hapus instalannya untuk menghindari ketidakcocokan konfigurasi dan versi.az extension add --upgrade --name spring az extension remove --name spring-cloud
- Selesaikan langkah-langkah dalam Membangun dan menyebarkan aplikasi ke Azure Spring Apps menggunakan paket Enterprise.
Mengatur batas tingkat permintaan
Spring Cloud Gateway menyertakan filter rute dari versi Open Source dan beberapa filter rute lainnya. Salah satu filter ini adalah filter RateLimit: Membatasi permintaan pengguna. Filter RateLimit membatasi jumlah permintaan yang diizinkan per rute selama jendela waktu.
Saat menentukan rute, Anda dapat menambahkan filter RateLimit dengan menyertakannya dalam daftar filter untuk rute. Filter menerima empat opsi:
- Jumlah permintaan yang diterima selama jendela.
- Durasi jendela. Nilai ini dalam milidetik secara default, tetapi Anda dapat menentukan akhiran s, m, atau h untuk menunjukkan bahwa nilainya dalam detik, menit, atau jam.
- (Opsional) Kunci partisi pengguna. Anda juga dapat menerapkan pembatasan tarif per pengguna. Artinya, pengguna yang berbeda dapat memiliki throughput mereka sendiri yang diizinkan berdasarkan pengidentifikasi yang ditemukan dalam permintaan. Tunjukkan apakah kunci berada dalam klaim JWT atau header HTTP dengan
claim
atauheader
sintaks. - (Opsional) Anda dapat menilai batas berdasarkan alamat IP, tetapi tidak dalam kombinasi dengan pembatasan tarif per pengguna.
Contoh berikut akan membatasi semua pengguna untuk dua permintaan setiap lima detik ke /products
rute:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s"
]
}
Jika Anda ingin mengekspos rute untuk sekumpulan pengguna yang berbeda, masing-masing diidentifikasi oleh header HTTP-nya sendiri client_id
, gunakan definisi rute berikut:
{
"predicates": [
"Path=/products",
"Method=GET"
],
"filters": [
"StripPrefix=0",
"RateLimit=2,5s,{header:client_id}"
]
}
Ketika batas terlampaui, respons akan gagal dengan 429 Too Many Requests
status.
Gunakan perintah berikut untuk menerapkan RateLimit
filter ke /products
rute:
az spring gateway route-config update \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> \
--name catalog-routes \
--app-name catalog-service \
--routes-file azure-spring-apps-enterprise/resources/json/routes/catalog-service_rate-limit.json
Gunakan perintah berikut untuk mengambil URL untuk /products
rute di Spring Cloud Gateway:
export GATEWAY_URL=$(az spring gateway show \
--resource-group <resource-group-name> \
--service <Azure-Spring-Apps-service-instance-name> | jq -r '.properties.url')
echo "https://${GATEWAY_URL}/products"
Buat beberapa permintaan ke URL untuk /products
dalam periode lima detik untuk melihat permintaan gagal dengan status 429 Too Many Requests
.
Membersihkan sumber daya
Jika Anda berencana untuk terus bekerja dengan mulai cepat dan tutorial berikutnya, biarkan sumber daya ini tetap di tempatnya. Jika tidak lagi diperlukan, hapus grup sumber daya yang juga akan menghapus sumber daya di grup sumber daya. Untuk menghapus grup sumber daya dengan menggunakan Azure CLI, gunakan perintah berikut:
echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."
Langkah berikutnya
Lanjutkan ke salah satu mulai cepat opsional berikut: