Arama hızını anahtara göre sınırlama

ŞUNLAR IÇIN GEÇERLIDIR: Geliştirici | Temel | Temel v2 | Standart | Standart v2 | Premium

İlke, rate-limit-by-key çağrı oranını belirli bir zaman aralığı için belirtilen bir numarayla sınırlayarak API kullanımındaki ani artışları anahtar temelinde engeller. Anahtarın rastgele bir dize değeri olabilir ve genellikle ilke ifadesi kullanılarak sağlanır. Hangi isteklerin sınıra doğru sayılması gerektiğini belirtmek için isteğe bağlı artış koşulu eklenebilir. Bu çağrı oranı aşıldığında, arayan bir 429 Too Many Requests yanıt durum kodu alır.

Hız sınırları ile kotalar arasındaki farkı anlamak için bkz. Hız sınırları ve kotalar.

Dikkat

Azaltma mimarisinin dağıtılmış yapısı nedeniyle hız sınırlaması hiçbir zaman tam olarak doğru değildir. Yapılandırılan ve izin verilen gerçek istek sayısı arasındaki fark, istek hacmine ve hızına, arka uç gecikme süresine ve diğer faktörlere göre değişiklik gösterir.

Not

İlkenin öğelerini ve alt öğelerini ilke bildiriminde sağlanan sırayla ayarlayın. Portal, bu ilkeyi yapılandırmanıza yardımcı olmak için kılavuzlu, form tabanlı bir düzenleyici sağlar. API Management ilkelerini ayarlama veya düzenleme hakkında daha fazla bilgi edinin.

İlke bildirimi

<rate-limit-by-key calls="number"
                   renewal-period="seconds"
                   increment-condition="condition"
                   increment-count="number"
                   counter-key="key value" 
                   retry-after-header-name="custom header name, replaces default 'Retry-After'" 
                   retry-after-variable-name="policy expression variable name"
                   remaining-calls-header-name="header name"  
                   remaining-calls-variable-name="policy expression variable name"
                   total-calls-header-name="header name"/> 

Özellikler

Öznitelik Açıklama Zorunlu Varsayılan
Aramalar içinde renewal-periodbelirtilen zaman aralığında izin verilen toplam çağrı sayısı üst sınırı. İlke ifadelerine izin verilir. Yes Yok
counter-key Hız sınırı ilkesi için kullanılacak anahtar. Her anahtar değeri için, ilkenin yapılandırıldığı tüm kapsamlar için tek bir sayaç kullanılır. İlke ifadelerine izin verilir. Yes Yok
artım koşulu İsteğin hıza (true ) göre sayılıp sayılmaması gerektiğini belirten Boole ifadesi. İlke ifadelerine izin verilir. Hayır YOK
artımlı sayı Sayacın istek başına artırıldığı sayı. İlke ifadelerine izin verilir. Hayır 1
yenileme süresi İzin verilen istek sayısının içinde callsbelirtilen değeri aşmaması gereken kayan pencerenin saniye cinsinden uzunluğu. İzin verilen maksimum değer: 300 saniye. İlke ifadelerine izin verilir. Yes Yok
retry-after-header-name Değeri, belirtilen çağrı hızı aşıldıktan sonra saniye cinsinden önerilen yeniden deneme aralığı olan özel yanıt üst bilgisinin adı. İlke ifadelerine izin verilmez. Hayır Retry-After
retry-after-variable-name Önerilen yeniden deneme aralığını belirtilen çağrı hızı aşıldıktan sonra saniyeler içinde depolayan bir ilke ifadesi değişkeninin adı. İlke ifadelerine izin verilmez. Hayır YOK
remaining-calls-header-name Her ilke yürütmeden sonraki değeri içinde belirtilen zaman aralığı için izin verilen kalan çağrı sayısı olan yanıt üst bilgisinin renewal-periodadıdır. İlke ifadelerine izin verilmez. Hayır YOK
remaining-calls-variable-name her ilke yürütmeden sonra içinde belirtilen zaman aralığı için izin verilen kalan çağrı sayısını depolayan bir ilke ifade değişkeninin renewal-periodadı. İlke ifadelerine izin verilmez. Hayır YOK
total-calls-header-name değeri içinde callsbelirtilen değer olan bir yanıt üst bilgisinin adı. İlke ifadelerine izin verilmez. Hayır YOK

Kullanım

Kullanım notları

  • Şirket içinde barındırılan bir ağ geçidindeki hız sınırı sayısı, yerel olarak (küme düğümleri arasındaki ağ geçidi örnekleri arasında), örneğin Kubernetes için Helm grafiği dağıtımı veya Azure portalı dağıtım şablonları kullanılarak eşitlenecek şekilde yapılandırılabilir. Ancak hız sınırı sayıları, buluttaki yönetilen ağ geçidi de dahil olmak üzere API Management örneğinde yapılandırılan diğer ağ geçidi kaynaklarıyla eşitlenmez. Daha fazla bilgi edinin

Örnek

Aşağıdaki örnekte, 60 saniye başına 10 çağrının hız sınırı arayan IP adresi tarafından anahtarlanır. Her ilke yürütmeden sonra, zaman aralığında izin verilen kalan çağrılar değişkeninde remainingCallsPerIPdepolanır.

<policies>
    <inbound>
        <base />
        <rate-limit-by-key  calls="10"
              renewal-period="60"
              increment-condition="@(context.Response.StatusCode == 200)"
              counter-key="@(context.Request.IpAddress)"
              remaining-calls-variable-name="remainingCallsPerIP"/>
    </inbound>
    <outbound>
        <base />
    </outbound>
</policies>

Bu ilke hakkında daha fazla bilgi ve örnek için bkz . Azure API Management ile gelişmiş istek azaltma.

İlkelerle çalışma hakkında daha fazla bilgi için bkz: