İngilizce dilinde oku

Aracılığıyla paylaş


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

Not

Temel, Standart ve Kurumsal planları, 3 yıllık kullanımdan kaldırma süresiyle Mart 2025 ortasından itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps kullanımdan kaldırma duyurusu.

Standart tüketim ve ayrılmış plan, altı ay sonra tamamen kapatılarak 30 Eylül 2024'den itibaren kullanımdan kaldırılacaktır. Azure Container Apps'e geçiş yapmanızı öneririz. Daha fazla bilgi için bkz . Azure Spring Apps Standart tüketimini ve ayrılmış planı Azure Container Apps'e geçirme.

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, azaltma 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 ssaniye, dakika veya h saat cinsinden olduğunu belirtmek için , mveya 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 veya header söz dizimi ile claim 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 istekle sınırlayabilir /products :

JSON
{
    "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:

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

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

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

Azure CLI
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:

Azure CLI
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"

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

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:

Azure CLI
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: