Aracılığıyla paylaş


Hızlı Başlangıç: İstek hızı sınırlarını ayarlama

Not

Temel, Standardve Enterprise planları 17 Mart 2025'te kullanımdan kaldırma dönemine girdi. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.

Standart tüketim ve ayrılmış planı 30 Eylül 2024'te emeklilik dönemine girdi ve Mart 2025 sonuna kadar tamamen kapatılacak. Daha fazla bilgi için Azure Spring Apps Standart tüketimi ve ayrılmış planı Azure Container Apps'e geçirmek konusuna bakın.

Bu makale şunlar için geçerlidir: ❎ Temel/Standart ✅ Kurumsal

Bu hızlı başlangıçta, Azure Spring Apps Enterprise planında Spring Cloud Gateway'i kullanarak istek hızı sınırlarının nasıl ayarlanacağı gösterilmektedir.

Hız sınırlama, trafikteki ani artışlarla ortaya çıkan sorunlardan kaçınmanızı sağlar. İstek hızı sınırları ayarladığınızda uygulamanız aşırı istekleri reddedebilir. Bu yapılandırma, kısıtlama hatalarını en aza indirmenize ve aktarım hızını daha doğru tahmin etmenize yardımcı olur.

Önkoşullar

İstek hızı sınırlarını ayarlama

Spring Cloud Gateway, Açık Kaynak sürümünden yol filtreleri ve daha birçok yol filtresi içerir. Bu filtrelerden biri RateLimit: Kullanıcı isteklerini sınırlama filtresidir. RateLimit filtresi, bir zaman penceresi boyunca yol başına izin verilen istek sayısını sınırlar.

Bir yol tanımlarken, rateLimit filtresini rotanın filtreler listesine ekleyerek ekleyebilirsiniz. Filtre dört seçenek kabul eder:

  • Pencere sırasında kabul edilen istek sayısı.
  • Pencerenin süresi. Bu değer varsayılan olarak milisaniye cinsindendir, ancak değerin saniye, dakika veya saat cinsinden olduğunu belirtmek için s, m veya h soneki belirtebilirsiniz.
  • (İsteğe bağlı) Kullanıcı bölüm anahtarı. Kullanıcı başına hız sınırlaması da uygulayabilirsiniz. Başka bir ifadeyle, farklı kullanıcılar istekte bulunan bir tanımlayıcıya göre kendi aktarım hızına izin verebilir. Anahtarın JWT talebinde mi yoksa HTTP üst bilgisinde mi olduğunu claim veya header söz dizimiyle belirtin.
  • (İsteğe bağlı) Ip adreslerine göre hız sınırı oluşturabilirsiniz, ancak kullanıcı başına hız sınırlaması ile birlikte kullanılamaz.

Aşağıdaki örnek, tüm kullanıcıları her beş saniyede bir iki istek ile /products rotasına sınırlayacaktır.

{
    "predicates": [
      "Path=/products",
      "Method=GET"
    ],
    "filters": [
      "StripPrefix=0",
      "RateLimit=2,5s"
    ]
}

Her biri kendi client_id HTTP üst bilgisi tarafından tanımlanan farklı kullanıcı kümeleri için bir yol göstermek istiyorsanız, aşağıdaki yol tanımını kullanın:

{
    "predicates": [
      "Path=/products",
      "Method=GET"
    ],
    "filters": [
      "StripPrefix=0",
      "RateLimit=2,5s,{header:client_id}"
    ]
}

Sınır aşıldığında yanıtlar 429 Too Many Requests durumu ile başarısız olur.

RateLimit filtresini /products yoluna uygulamak için aşağıdaki komutu kullanın:

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

Spring Cloud Gateway'de yolun URL'sini /products almak için aşağıdaki komutları kullanın:

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"

URL'ye /products beş saniyelik bir süre içinde birkaç istekte bulunarak isteklerin 429 Too Many Requests durumuyla başarısız olduğunu görün.

Kaynakları temizleme

Sonraki hızlı başlangıçlar ve öğreticilerle çalışmaya devam etmek istiyorsanız, bu kaynakları yerinde bırakmak isteyebilirsiniz. Artık gerekli olmadığında kaynak grubunu silin; bu da kaynak grubundaki kaynakları siler. Azure CLI kullanarak kaynak grubunu silmek için aşağıdaki komutları kullanın:

echo "Enter the Resource Group name:" &&
read resourceGroupName &&
az group delete --name $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Sonraki adımlar

Aşağıdaki isteğe bağlı hızlı başlangıçlardan herhangi birine geçin: