Share via


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

Not

Azure Spring Apps, Azure Spring Cloud hizmetinin yeni adıdır. Hizmetin yeni bir adı olsa da, ekran görüntüleri, videolar ve diyagramlar gibi varlıkları güncelleştirmek için çalışırken bazı yerlerde eski adı bir süre görürsünüz.

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 saniye, dakika veya saat cinsinden olduğunu belirtmek için s, m veya s sonekini 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 :

{
    "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 durumla 429 Too Many Requests başarısız olur.

Filtreyi /products yola uygulamak RateLimit 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"

İ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:

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: