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

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 atau header 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: