Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
UYGULANANLAR: Tüm API Management katmanları
Gelen istekleri kısıtlama özelliği, Azure API Management'ın önemli bir rolüdür. API Management, API sağlayıcılarının api'lerini kötüye kullanıma karşı korumalarına ve isteklerin oranını veya aktarılan toplam istekleri/verileri denetleyerek farklı API ürün katmanları için değer oluşturmalarına olanak tanır. Bu makalede kota ve hız sınırlamanın nasıl oluşturulacağı ve uygulanacağı açıklanmaktadır.
Oran limitleri ve kotaları
Hız sınırları ve kotalar farklı amaçlar için kullanılır.
Hız sınırları
Hız sınırları genellikle kısa ve yoğun hacim artışlarına karşı koruma sağlamak için kullanılır. Örneğin, arama birimleri yüksek olduğunda arka uç hizmetinizin veritabanında bir performans sorunu olduğunu biliyorsanız, yüksek çağrı birimlerine izin vermemek için bir rate-limit-by-key ilke ayarlayabilirsiniz.
Dil modeli arka uçlarında, arka ucunuz tarafından dakika başına işlenen belirteç sayısını sınırlamak için bir llm-token-limit ilke ayarlayabilirsiniz. Bu ilke, belirteç kullanımında maliyetlerin artmasına, kaynakların tükenmesine veya performansın düşmesine neden olabilecek ani ani artışlara karşı korumaya yardımcı olur.
Dikkat
Azaltma mimarisinin dağıtılmış yapısı nedeniyle hız sınırlaması asla tamamen doğru şekilde işlemez. yapılandırılmış izin verilen istek sayısı ile gerçek sayı arasındaki fark, istek hacmine ve hızına, arka uç gecikme süresine ve diğer faktörlere bağlı olarak değişir.
Klasik ve v2 katmanları
API Management, örneğinizin klasik veya v2 hizmet katmanlarından birinde olmasına bağlı olarak hız sınırlamayı farklı şekilde uygular:
Klasik katmanlar kayan pencere algoritması kullanır.
V2 katmanları daha verimli olan ve Azure Resource Manager'da hız sınırlamasıyla uyumlu bir belirteç demeti algoritması kullanır.
Genel hız sınırlama davranışı API Management katmanlarında benzer olsa da, uygulamadaki farklılıklar ve rate-limit-by-keygibi llm-token-limit hız sınırlama ilkelerinin bazı kullanım ayrıntılarını etkiler.
Kotalar
Kotalar genellikle daha uzun bir süre boyunca çağrı oranlarını denetlemek için kullanılır. Örneğin, belirli bir abonenin belirli bir ay içinde gerçekleştirebileceği toplam çağrı sayısını ayarlayabilir. API'nizden para kazanmanız durumunda katman tabanlı abonelikler için kotaları farklı şekilde ayarlayabilirsiniz. Örneğin, Temel katman aboneliği ayda en fazla 10.000 çağrı yapabilir, ancak Premium katmanı her ay 100.000.000 çağrı yapabilir.
API Management'ta hız sınırları genellikle ani artışlara karşı koruma sağlamak için düğümler arasında daha hızlı yayılır. Buna karşılık, kullanım kotası bilgileri daha uzun bir süre boyunca kullanıldığından, uygulaması farklıdır.
Uyarı
Hizmet platformunda temel işlem kaynakları yeniden başlatıldığında API Management, kotaya ulaşıldıktan sonra kısa bir süre için istekleri işlemeye devam edebilir.
Ürün tabanlı kısıtlama
API sağlayıcıları, API'lerini kullanmak üzere kaydolan geliştiricilere sınırlar uygulamak için belirli bir abonelik kapsamındaki hız azaltma özelliklerini kullanabilir. Ancak, bu tür azaltma, örneğin API'nin tek tek son kullanıcılarını azaltma konusunda yardımcı olmaz. Geliştiricinin uygulamasının tek bir kullanıcısının kotanın tamamını kullanması ve geliştiricinin diğer müşterilerinin uygulamayı kullanabilmesini engellemesi mümkündür. Ayrıca, yüksek hacimli istekler oluşturan birkaç müşteri, erişimi ara sıra kullanan kullanıcılarla sınırlayabilir.
Özel anahtar tabanlı sınırlama
Uyarı
rate-limit-by-key ve quota-by-key ilkeleri Azure API Management'ın Tüketim katmanında kullanılamaz.
Anahtara göre hız sınırı ve anahtara göre kota ilkeleri, trafik denetimi için daha esnek bir çözüm sağlar. Bu ilkeler, trafik kullanımını izlemek için kullanılan anahtarları tanımlamak için ifadeler tanımlamanızı sağlar. Bu teknik aşağıdaki örneklerde gösterilmiştir.
IP adresi sınırlandırma
Aşağıdaki ilkeler tek bir istemci IP adresini dakikada yalnızca 10 çağrıyla kısıtlar ve ayda toplam 1.000.000 çağrı ve 10.000 kilobayt bant genişliği uygular:
<rate-limit-by-key calls="10"
renewal-period="60"
counter-key="@(context.Request.IpAddress)" />
<quota-by-key calls="1000000"
bandwidth="10000"
renewal-period="2629800"
counter-key="@(context.Request.IpAddress)" />
İnternet'te tüm istemciler benzersiz bir IP adresi kullandıysa, bu kullanıcı tarafından kullanımı sınırlamanın etkili bir yolu olabilir. Ancak, bir NAT cihazı aracılığıyla İnternet'e erişen birden çok kullanıcının tek bir genel IP adresi paylaşması olasıdır. Yine de, kimliği doğrulanmamış erişime izin veren API'ler için en iyi seçenek kullanmak IpAddress olabilir.
Kullanıcı kimliği sınırlaması
Son kullanıcının kimliği doğrulanmışsa, kullanıcıyı benzersiz olarak tanımlayan bilgilere temel alınarak bir kısıtlama anahtarı oluşturabilirsiniz.
<rate-limit-by-key calls="10"
renewal-period="60"
counter-key="@(context.Request.Headers.GetValueOrDefault("Authorization","").AsJwt()?.Subject)" />
Bu örnekte Yetkilendirme üst bilgisini ayıklama, bir JWT nesnesine dönüştürme ve kullanıcıyı tanımlamak için belirtecin konusunu kullanma işlemleri gösterilmektedir. Ardından bu değeri hız sınırlama anahtarı olarak kullanır. Kullanıcı kimliği içinde JWT diğer taleplerden biri olarak depolanıyorsa, bunun yerine bu değer kullanılabilir.
Birleştirilmiş ilkeler
Kullanıcı tabanlı azaltma ilkeleri abonelik tabanlı azaltma ilkelerine göre daha fazla denetim sağlasa da, her iki özelliğin de birleştirilmesinde bir değer vardır. Para kazandırılmış API'ler için, ürün abonelik anahtarına göre azaltma (Çağrı oranını aboneliğe göre sınırla ve Aboneliğe göre kullanım kotası ayarla) kullanım düzeylerini temel alan ücretleri uygulamanın harika bir yoludur. Kullanıcı bazında daha ince ayrıntılı kontrol sağlamak, tamamlayıcı bir işlev görür ve bir kullanıcının davranışının diğer kullanıcıların deneyimini düşürmesini önler.
İstemci tabanlı kısıtlama
Azaltma anahtarı bir ilke ifadesi aracılığıyla tanımlandığında, azaltmanın kapsamını API sağlayıcısı seçer. Ancak, bir geliştirici kendi müşterilerini nasıl hız sınırlamasına tabi tuttuklarını kontrol etmek isteyebilir. API sağlayıcısı, geliştiricinin istemci uygulamasının anahtarı API'ye iletmesini sağlamak için özel bir üst bilgi ekleyerek bu tür bir denetimi etkinleştirebilir:
<rate-limit-by-key calls="100"
renewal-period="60"
counter-key="@(request.Headers.GetValueOrDefault("Rate-Key",""))"/>
Bu teknik, geliştiricinin istemci uygulamasının hız sınırlama anahtarının nasıl oluşturulacağını belirlemesini sağlar. İstemci geliştiriciler, kullanıcılara anahtar kümeleri ayırarak ve anahtar kullanımını döndürerek kendi hız katmanlarını oluşturabilir.
Birden çok bölge veya ağ geçidi için dikkat edilmesi gerekenler
, rate-limit, rate-limit-by-keyve azure-openai-token-limit gibi llm-token-limithız sınırlama ilkeleri API Management ağ geçidi düzeyinde sayaçları kullanır. Bu nedenle, API Management'ın çok bölgeli dağıtımlarında her bölgesel ağ geçidinin ayrı bir sayacı vardır ve hız sınırları her bölge için ayrı olarak uygulanır. Benzer şekilde, çalışma alanları olan API Management örneklerinde sınırlar her çalışma alanı ağ geçidi için ayrı ayrı uygulanır.
quota ve quota-by-key gibi kota politikaları geneldir, yani API Yönetimi örneği düzeyinde tek bir sayaç kullanılır.
Özet
API Management, API hizmetinizi korumak ve buna değer katmak için hız ve kota azaltma sağlar. Kendi kapsam belirleme kurallarına sahip sınırlama ilkeleri, müşterilerinizin daha iyi uygulamalar geliştirmelerine olanak sağlamak için bu ilkeler üzerinde daha ayrıntılı denetim olanağı sunar. Bu makaledeki örnekler, istemci IP adresleri, kullanıcı kimliği ve istemci tarafından oluşturulan değerlerle hız sınırlama anahtarları oluşturarak bu ilkelerin kullanımını gösterir. Ancak, iletinin kullanıcı aracısı, URL yolu parçaları ve ileti boyutu gibi diğer birçok bölümünü kullanabilirsiniz.