Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin. info

Ne?
Bir API Proxy'sinin bir süre boyunca (ör. dakika, saat, gün, hafta veya ay) izin verdiği istek mesajı sayısını yapılandırmak için kota politikasını kullanın. Kotayı, API proxy'sine erişen tüm uygulamalar için aynı olacak şekilde ayarlayabilir veya aşağıdakilere göre ayarlayabilirsiniz:
- API proxy'sini içeren ürün
- API'yi isteyen uygulama
- Uygulama geliştirici
- Diğer birçok ölçüt
Genel trafik artışlarına karşı koruma sağlamak için kotayı kullanmayın. Bunun için Spike Arrest politikasını kullanın. Spike Arrest politikasını inceleyin.
Videolar
Aşağıdaki videolarda, kota politikası ile kota yönetimi hakkında bilgi verilmektedir:
Giriş (Yeni Edge)
Giriş (Klasik Edge)
Dinamik Kota
Dağıtılmış ve Eşzamanlı
Mesaj Ağırlığı
Takvim
Kaydırma aralığı
Flexi
Koşullu Kota
Akış Değişkenleri
Hata İşleme
Örnekler
Bu politika kodu örnekleri, kota dönemlerinin nasıl başlatılacağını ve sonlandırılacağını aşağıdaki şekilde göstermektedir:
Daha Dinamik Kota
<Quota name="CheckQuota"> <Interval ref="verifyapikey.verify-api-key.apiproduct.developer.quota.interval">1</Interval> <TimeUnit ref="verifyapikey.verify-api-key.apiproduct.developer.quota.timeunit">hour</TimeUnit> <Allow count="200" countRef="verifyapikey.verify-api-key.apiproduct.developer.quota.limit"/> </Quota>
Dinamik kotalar, kota politikasına iletilen bilgilere göre farklı kota ayarlarını zorunlu tutan tek bir kota politikası yapılandırmanıza olanak tanır. Bu bağlamda kota ayarları için kullanılan bir diğer terim de "Hizmet Planı"dır. Dinamik kota, uygulamaların "Hizmet Planı"nı kontrol eder ve ardından bu ayarları uygular.
Not: Bir öğe için hem değer hem de referans belirtirseniz referans öncelikli olur. Referans çalışma zamanında çözülmezse değer kullanılır.
Örneğin, API ürünü oluşturduğunuzda isteğe bağlı olarak izin verilen kota sınırını, zaman birimini ve aralığı ayarlayabilirsiniz. Ancak bu değerlerin API ürününde ayarlanması, API proxy'sinde kullanılmasını zorunlu kılmaz. Ayrıca, API proxy'sine bu değerleri okuyan bir kota politikası da eklemeniz gerekir. Daha fazla bilgi için API ürünleri oluşturma başlıklı makaleyi inceleyin.
Yukarıdaki örnekte, kota politikasını içeren API proxy'si, bir istekle iletilen API anahtarını doğrulamak için verify-api-key
adlı bir VerifyAPIKey politikası kullanır. Kota politikası daha sonra API ürününde ayarlanan kota değerlerini okumak için VerifyAPIKey politikasındaki akış değişkenlerine erişir. VerifyAPIKey akış değişkenleri hakkında daha fazla bilgi için API anahtarını doğrulama politikası başlıklı makaleyi inceleyin.
Diğer bir seçenek de, geliştiriciler veya uygulamalar için özel özellikler ayarlamak ve ardından bu değerleri kota politikasında okumaktır. Örneğin, geliştirici başına farklı kota değerleri belirlemek istiyorsunuz. Bu durumda, geliştirici için sınır, zaman birimi ve aralığı içeren özel özellikler ayarlarsınız. Ardından, Kota Politikası'nda aşağıdaki gibi bu değerlere referans verirsiniz:
<Quota name="DeveloperQuota"> <Identifier ref="verifyapikey.verify-api-key.client_id"/> <Interval ref="verifyapikey.verify-api-key.developer.timeInterval"/> <TimeUnit ref="verifyapikey.verify-api-key.developer.timeUnit"/> <Allow countRef="verifyapikey.verify-api-key.developer.limit"/> </Quota>
Bu örnekte, geliştirici için ayarlanan özel özelliklere referans vermek amacıyla VerifyAPIKey akış değişkenleri de kullanılır.
Kota politikasının parametrelerini ayarlamak için herhangi bir değişkeni kullanabilirsiniz. Bu değişkenler şu kaynaklardan gelebilir:
- Akış değişkenleri
- API ürününde, uygulamasında veya geliştiricisinde mülkler
- Anahtar/değer eşleme (KVM)
- Başlık, sorgu parametresi, form parametresi vb.
Her API proxy için, diğer tüm proxy'lerdeki diğer tüm kota politikalarıyla aynı değişkene referans veren bir kota politikası ekleyebilirsiniz. Kota politikası, söz konusu politika ve proxy'ye özgü değişkenleri de referans alabilir.
Başlangıç Zamanı
<Quota name="QuotaPolicy" type="calendar"> <StartTime>2017-02-18 10:30:00</StartTime> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
type
değeri calendar
olarak ayarlanmış bir kota için açık bir <StartTime>
değeri tanımlamanız gerekir. Zaman değeri, yerel saat değil, GMT saatidir. calendar
türündeki bir politika için <StartTime>
değeri sağlamazsanız Edge hata verir.
Her uygulamanın kota sayacı, <StartTime>
, <Interval>
ve <TimeUnit>
değerlerine göre yenilenir. Bu örnekte, kota 18 Şubat 2017 saat 10:30'da (GMT) saymaya başlar ve 5 saatte bir yenilenir. Bu nedenle, bir sonraki yenileme 18 Şubat 2017'de saat 15:30 (GMT) olacak.
Erişim Sayacı
<Quota name="QuotaPolicy"> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
API proxy'si, kota politikası tarafından ayarlanan akış değişkenlerine erişebilir. Koşullu işlem gerçekleştirmek, kota sınırına yaklaştıkça politikayı izlemek, mevcut kota sayacını bir uygulamaya döndürmek veya başka nedenlerle API proxy'sinde bu akış değişkenlerine erişebilirsiniz.
Politikanın akış değişkenlerine erişim, politikaların name
özelliğine dayalı olduğundan, yukarıdaki QuotaPolicy
adlı politikanın akış değişkenlerine şu biçimde erişirsiniz:
ratelimit.QuotaPolicy.allowed.count
: İzin verilen sayı.ratelimit.QuotaPolicy.used.count
: Mevcut sayaç değeri.ratelimit.QuotaPolicy.expiry.time
: Sayacın sıfırlandığı UTC saati.
Aşağıda açıklandığı gibi erişebileceğiniz başka birçok akış değişkeni vardır.
Örneğin, kota akışı değişkenlerinin değerlerini yanıt üstbilgileri olarak döndürmek için aşağıdaki AssignMessage politikasını kullanabilirsiniz:
<AssignMessage async="false" continueOnError="false" enabled="true" name="ReturnQuotaVars"> <AssignTo createNew="false" type="response"/> <Set> <Headers> <Header name="QuotaLimit">{ratelimit.QuotaPolicy.allowed.count}</Header> <Header name="QuotaUsed">{ratelimit.QuotaPolicy.used.count}</Header> <Header name="QuotaResetUTC">{ratelimit.QuotaPolicy.expiry.time}</Header> </Headers> </Set> <IgnoreUnresolvedVariables>false</IgnoreUnresolvedVariables> </AssignMessage>
İlk İstek
<Quota name="MyQuota"> <Interval>1</Interval> <TimeUnit>hour</TimeUnit> <Allow count="10000"/> </Quota>
Bir saatte 10.000 arama kotası uygulamak için bu örnek kodu kullanın. Politika, her saatin başında kota sayacını sıfırlar. Sayaç, saat sona ermeden önce 10.000 arama kotasına ulaşırsa 10.000'den fazla arama reddedilir.
Örneğin, sayaç 2017-07-08 07:00:00
'te başlarsa 2017-07-08 08:00:00
'te (başlangıç zamanından 1 saat sonra) 0'a sıfırlanır. İlk mesaj 2017-07-08 07:35:28
saatinde alınır ve mesaj sayısı 2017-07-08 08:00:00
saatinden önce 10.000'e ulaşırsa sayı saatin başında sıfırlanana kadar bu sayının üzerindeki aramalar reddedilir.
Sayaç sıfırlama zamanı, <Interval>
ve <TimeUnit>
kombinasyonuna dayalıdır. Örneğin, <Interval>
değerini <TimeUnit>
saat için 12 olarak belirlerseniz sayaç on iki saatte bir sıfırlanır.
<TimeUnit>
değerini dakika, saat, gün, hafta veya ay olarak ayarlayabilirsiniz.
Bu politikaya API proxy'nizdeki birden fazla yerde referans verebilirsiniz. Örneğin, her istekte yürütülmesi için bunu Proxy Ön Akış'ına yerleştirebilirsiniz. Alternatif olarak, API proxy'sinde birden fazla akışa yerleştirebilirsiniz. Bu politikayı proxy'de birden fazla yerde kullanırsanız politika, tüm örnekleri tarafından güncellenen tek bir sayaç tutar.
Alternatif olarak, API proxy'nizde birden fazla kota politikası tanımlayabilirsiniz. Her kota politikasının, politikanın name
özelliğine göre kendi sayacı vardır.
Tanımlayıcıyı ayarlama
<Quota name="QuotaPolicy" type="calendar"> <Identifier ref="request.header.clientId"/> <StartTime>2017-02-18 10:00:00</StartTime> <Interval>5</Interval> <TimeUnit>hour</TimeUnit> <Allow count="99"/> </Quota>
Varsayılan olarak, kota politikası bir isteğin kaynağından bağımsız olarak API proxy'si için tek bir sayaç tanımlar. Alternatif olarak, <Identifier>
özelliğinin değerine göre ayrı sayaçlar tutmak için <Identifier>
özelliğini bir kota politikasıyla birlikte kullanabilirsiniz.
Örneğin, her istemci kimliği için ayrı sayaçlar tanımlamak üzere <Identifier>
etiketini kullanın. İstemci uygulaması, proxy'nize gönderilen bir istek üzerine yukarıdaki örnekte gösterildiği gibi clientID
değerini içeren bir başlık iletir.
<Identifier>
özelliğine herhangi bir akış değişkeni belirtebilirsiniz. Örneğin, id
adlı bir sorgu parametresinin benzersiz tanımlayıcıyı içerdiğini belirtebilirsiniz:
<Identifier ref="request.queryparam.id"/>
API anahtarını doğrulamak için VerifyAPIKey politikasını veya OAuth jetonlarıyla OAuthV2 politikalarını kullanıyorsanız aynı kota politikası için ayrı sayaçlar tanımlamak amacıyla API anahtarındaki veya jetondaki bilgileri kullanabilirsiniz. Örneğin, aşağıdaki <Identifier>
etiketi, verify-api-key
adlı bir VerifyAPIKey politikasının client_id
akış değişkenini kullanır:
<Identifier ref="verifyapikey.verify-api-key.client_id"></Identifier>
Her benzersiz client_id
değeri artık kota politikasında kendi sayacını tanımlar.
Sınıf
<Quota name="QuotaPolicy"> <Interval>1</Interval> <TimeUnit>day</TimeUnit> <Allow> <Class ref="request.header.developer_segment"> <Allow class="platinum" count="10000"/> <Allow class="silver" count="1000" /> </Class> </Allow> </Quota>
Sınıfa dayalı bir kota sayımı kullanarak kota sınırlarını dinamik olarak ayarlayabilirsiniz. Bu örnekte, kota sınırı her istekle birlikte iletilen developer_segment
başlığının değerine göre belirlenir. Bu değişkenin değeri platinum
veya silver
olabilir. Başlıkta geçersiz bir değer varsa politika, kota ihlali hatası döndürür.
Kota politikası hakkında
Kota, bir API proxy'sinin dakika, saat, gün, hafta veya ay gibi bir dönemde işleyebileceği istek mesajlarının bir bölümüdür. Politika, API proxy'sinin aldığı istek sayısını sayan sayaçlar tutar. Bu özellik, API sağlayıcıların belirli bir zaman aralığında uygulamalar tarafından yapılan API çağrılarının sayısına sınırlama getirmelerine olanak tanır. Örneğin, kota politikalarını kullanarak uygulamaları dakika başına 1 istekle veya ayda 10.000 istekle sınırlayabilirsiniz.
Örneğin, kota aylık 10.000 ileti olarak tanımlanırsa hız sınırlaması 10.000. iletiden sonra başlar. 10.000 mesajın ilgili dönemin ilk gününde mi yoksa son gününde mi sayıldığı önemli değildir. Kota sayacı, belirtilen zaman aralığının sonunda otomatik olarak sıfırlanana veya Kotayı sıfırlama politikası kullanılarak açıkça sıfırlanana kadar ek istek alanına izin verilmez.
Kota'nın bir varyasyonu olan SpikeArrest, kullanımdaki ani artış, hatalı istemciler veya kötü amaçlı saldırılardan kaynaklanabilecek trafik artışlarını (veya patlamalarını) önler. SpikeArrest hakkında daha fazla bilgi için SpikeArrest politikası başlıklı makaleyi inceleyin.
Kotalar, API proxy'leri için ayrı ayrı geçerlidir ve API proxy'leri arasında dağıtılmaz. Örneğin, bir API ürününde üç API proxy'niz varsa üçü de aynı kota politikası yapılandırmasını kullansa bile tek bir kota üçü arasında paylaşılmaz.
Kota politikası türleri
Kota politikası, varsayılan, calendar
, flexi
ve rollingwindow
olmak üzere çeşitli politika türlerini destekler. Her tür, kota sayacını ne zaman başlatacağını ve ne zaman sıfırlayacağını aşağıdaki tabloda gösterildiği gibi tanımlar:
Zaman Birimi | Varsayılan (veya null) sıfırlama | takvimi sıfırlama | flexi sıfırlama |
---|---|---|---|
dakika | Sonraki dakikanın başlangıcı | <StartTime> 'ten bir dakika sonra |
İlk istekten bir dakika sonra |
saat | Sonraki saatin başında | <StartTime> saat sonra |
İlk istekten bir saat sonra |
gün | Geçerli günün gece yarısı (GMT) | <StartTime> tarihinden 24 saat sonra |
İlk istekten 24 saat sonra |
hafta | Haftanın sonundaki Pazar günü gece yarısı (GMT) | <StartTime> tarihinden bir hafta sonra |
İlk istekten bir hafta sonra |
ay | Ayın son gününün GMT'de gece yarısı | <StartTime> 'ten bir ay (28 gün) sonra |
İlk istekten bir ay (28 gün) sonra |
type="calendar"
için <StartTime>
değerini belirtmeniz gerekir.
Tabloda rollingwindow
türü için değer listelenmiyor. Kaydırma penceresi kotaları, bir saat veya bir gün gibi bir kota "penceresinin" boyutunu ayarlayarak çalışır. Yeni bir istek geldiğinde politika, kotanın geçmişteki bir "dönemde" aşılıp aşılmadığını belirler.
Örneğin, 1.000 isteğe izin veren iki saatlik bir zaman aralığı tanımlarsınız. 16:45'te yeni bir istek gelir.Politika, son iki saatlik zaman aralığı için kota sayısını (yani 14:45'ten sonraki isteklerin sayısını) hesaplar. Bu iki saatlik süre içinde kota sınırı aşılmış değilse isteğe izin verilir.
Bir dakika sonra, 16:46'da başka bir istek gelir. Artık politika, sınırın aşılıp aşılmadığını belirlemek için 14:46'dan sonraki kota sayısını hesaplar.
rollingwindow
türü için sayaç hiçbir zaman sıfırlanmaz ancak her istekte yeniden hesaplanır.
Kota sayaçları hakkında
Varsayılan olarak, bir kota politikası, API proxy'sinde kaç kez referans verdiğinizden bağımsız olarak tek bir sayaç kullanır. Kota sayıcısının adı, politikanın name
özelliğine dayanır.
Örneğin, 5 istek sınırına sahip MyQuotaPolicy
adlı bir kota politikası oluşturup API proxy'sinde birden fazla akışa (A, B ve C akışı) yerleştirirseniz. Birden fazla akışta kullanılsa da politikanın tüm örnekleri tarafından güncellenen tek bir sayaç tutar:
- A akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 1 olur
- B akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 2 olur
- A akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 3 olur
- C akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 4 olur
- A akışı yürütülür -> MyQuotaPolicy yürütülür ve sayacı = 5
Kota sayacı sınırına ulaştığı için üç akıştan herhangi birine gönderilen sonraki istek reddedilir.
API proxy akışında aynı kota politikasının birden fazla yerde kullanılması, kotanın beklenenden daha hızlı tükenmesine neden olabilir. Bu, The Book of Apigee Edge Antipatterns (Apigee Edge Antipatterns Kitabı) adlı makalede açıklanan bir anti-pattern'dir.
Alternatif olarak, API proxy'nizde birden fazla kota politikası tanımlayabilir ve her akışta farklı bir politika kullanabilirsiniz. Her kota politikası, politikanın name
özelliğine göre kendi sayacını korur.
Dilerseniz tek bir politikada birden fazla benzersiz sayaç tanımlamak için kota politikasındaki <Class>
veya <Identifier>
öğelerini de kullanabilirsiniz. Bu öğeleri kullanarak tek bir politika, isteği gönderen uygulamaya, isteği gönderen uygulama geliştiriciye, istemci kimliğine veya diğer istemci tanımlayıcılarına göre farklı sayaçlar tutabilir. <Class>
veya <Identifier>
öğelerini kullanma hakkında daha fazla bilgi için yukarıdaki örneklere bakın.
Zaman gösterimi
Tüm kota süreleri Eşgüdümlü Evrensel Zaman (UTC) saat dilimine ayarlanır.
Kota saati gösterimi, Uluslararası Standart ISO 8601'de tanımlanan uluslararası standart tarih gösterimini izler.
Tarihler yıl, ay ve gün olarak aşağıdaki biçimde tanımlanır: YYYY-MM-DD
.
Örneğin, 2015-02-04
4 Şubat 2015'i temsil eder.
Saat, aşağıdaki biçimde saat, dakika ve saniye olarak tanımlanır:
hours:minutes:seconds
. Örneğin, 23:59:59
, gece yarısından bir saniye önceki zamanı temsil eder.
Bir tarihle ilişkilendirilebilecek iki gece yarısını birbirinden ayırmak için 00:00:00
ve 24:00:00
olmak üzere iki gösterim kullanılabileceğini unutmayın. Bu nedenle 2015-02-04
24:00:00
, 2015-02-05 00:00:00
ile aynı tarih ve saattir. Genellikle tercih edilen gösterim budur.
API ürün yapılandırmasından kota ayarlarını alma
API ürün yapılandırmalarında kota sınırlarını ayarlayabilirsiniz. Bu sınırlar kotayı otomatik olarak uygulamaz. Bunun yerine, kota politikasındaki ürün kotası ayarlarına referans verebilirsiniz. Kota politikalarının referans alabileceği ürüne kota belirlemenin bazı avantajlarını aşağıda bulabilirsiniz:
- Kota politikaları, API ürünündeki tüm API proxy'lerinde tek bir ayar kullanabilir.
- Bir API ürününde kota ayarıyla ilgili çalışma zamanında değişiklik yapabilirsiniz. Değere atıfta bulunan kota politikaları, otomatik olarak güncellenmiş kota değerlerine sahiptir.
API ürününden kota ayarlarını kullanma hakkında daha fazla bilgi için yukarıdaki "Dinamik Kota" örneğine bakın..
API ürünlerini kota sınırlarıyla yapılandırma hakkında bilgi edinmek için API ürünleri oluşturma başlıklı makaleyi inceleyin.
Öğe referansı
Aşağıda, bu politikada yapılandırabileceğiniz öğeler ve özellikler verilmiştir. Bazı öğe kombinasyonlarının birbirini hariç tuttuğunu veya gerekli olmadığını unutmayın. Belirli kullanım örneklerini inceleyin. İstekte uygulamanın API anahtarını kontrol etmek için "VerifyAPIKey" adlı bir API Anahtarı Doğrulama politikası kullanıldığında aşağıdaki verifyapikey.VerifyAPIKey.apiproduct.*
değişkenleri varsayılan olarak kullanılabilir.
Değişken değerleri, API ürün yapılandırmasından kota ayarlarını alma bölümünde açıklandığı gibi, anahtarın ilişkili olduğu API ürünündeki kota ayarlarından gelir.
<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar"> <DisplayName>Quota 3</DisplayName> <Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/> <Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow> <Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval> <TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit> <StartTime>2017-7-16 12:00:00</StartTime> <Distributed>false</Distributed> <Synchronous>false</ Synchronous> <AsynchronousConfiguration> <SyncIntervalInSeconds>20</ SyncIntervalInSeconds> <SyncMessageCount>5</ SyncMessageCount> </AsynchronousConfiguration> <Identifier/> <MessageWeight/> </Quota>
<Quota> özellikleri
<Quota async="false" continueOnError="false" enabled="true" name="Quota-3" type="calendar">
Aşağıdaki özellikler bu politikaya özeldir.
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
tür |
Kota sayıcısının kota kullanımını ne zaman ve nasıl kontrol edeceğini belirlemek için kullanılır. Daha fazla bilgi için Kota politikası türleri bölümüne bakın. Bir Geçerli değerler şunlardır:
|
takvim | İsteğe bağlı |
Aşağıdaki tabloda tüm politika üst öğelerinde ortak olan özellikler açıklanmaktadır:
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
name |
Politikanın dahili adı. İsteğe bağlı olarak, politikayı |
Yok | Zorunlu |
continueOnError |
Bir politika başarısız olduğunda hata döndürmesi için Akış yürütmenin bir politikadan sonra bile devam etmesi için |
false | İsteğe bağlı |
enabled |
Politikayı uygulamak için Politikayı devre dışı bırakmak için |
true | İsteğe bağlı |
async |
Bu özelliğin desteği sonlandırıldı. |
false | Kullanımdan kaldırıldı |
<DisplayName> öğe
Politikayı name
özelliğine ek olarak
farklı bir doğal dil adına sahip yönetim arayüzü proxy düzenleyicisi.
<DisplayName>Policy Display Name</DisplayName>
Varsayılan |
Yok Bu öğeyi çıkarırsanız politikanın |
---|---|
Varlık | İsteğe bağlı |
Tür | Dize |
<Allow> öğesi
Kotanın sayı sınırını belirtir. Politikanın sayacı bu sınır değerine ulaşırsa sayaç sıfırlanana kadar sonraki aramalar reddedilir.
<Allow>
öğesini ayarlamayla ilgili üç yöntem aşağıda gösterilmektedir:
<Allow count="2000"/>
<Allow countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
<Allow count="2000" countRef="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.limit"/>
Hem count
hem de countRef
öğesini belirtirseniz countRef
öncelikli olur. countRef
çalışma zamanında çözülmezse count
değerinin kullanılır.
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Tamsayı |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
sayı |
Kota için bir ileti sayısı belirtmek üzere kullanılır. Örneğin, |
2000 | İsteğe bağlı |
countRef |
Bir kotanın mesaj sayısını içeren bir akış değişkeni belirtmek için kullanın.
|
yok | İsteğe bağlı |
<Allow>/<Class> öğesi
<Class>
öğesi, <Allow>
öğesinin değerini bir akış değişkeninin değerine göre koşullandırmanıza olanak tanır. Politika, <Class>
öğesinin her farklı <Allow>
alt etiketi için farklı bir sayaç tutar.
<Class>
öğesini kullanmak için <Class>
etiketinde ref
özelliğini kullanarak bir akış değişkeni belirtin. Ardından Edge, politikanın izin verilen sayısını belirlemek için <Allow>
alt etiketinden birini seçmek üzere akış değişkeninin değerini kullanır. Edge, aşağıdaki gibi akış değişkeninin değerini <Allow>
etiketinin class
özelliğiyle eşleştirir:
<Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow>
Bu örnekte mevcut kota sayacı, her istekle birlikte iletilen time_variable
sorgu parametresinin değerine göre belirlenir. Bu değişkenin değeri peak_time
veya off_peak_time
olabilir. Sorgu parametresi geçersiz bir değer içeriyorsa politika kota ihlali hatası döndürür.
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ref |
Bir kotanın kota sınıfını içeren bir akış değişkeni belirtmek için kullanın. |
yok | Zorunlu |
<Allow>/<Class>/<Allow> öğesi
<Allow>
öğesi, <Class>
öğesi tarafından tanımlanan bir kota sayıcısının sınırını belirtir. Politika, <Class>
'un her farklı <Allow>
alt etiketi için farklı bir sayaç tutar.
Örneğin:
<Allow> <Class ref="request.queryparam.time_variable"> <Allow class="peak_time" count="5000"/> <Allow class="off_peak_time" count="1000"/> </Class> </Allow>
Bu örnekte, kota politikası peak_time
ve off_peak_time
adlı iki kota sayacı tutar.
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: | Yok |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
sınıf |
Kota sayıcısının adını tanımlar. |
yok | Zorunlu |
sayı | Sayaç için kota sınırını belirtir. | yok | Zorunlu |
<Interval> öğesi
Edge'in kota kullanımını hesapladığı bir dönem belirlemek için, belirttiğiniz TimeUnit
ile eşlenecek bir tam sayı (ör. 1, 2, 5, 60 vb.) belirtmek amacıyla kullanılır (dakika, saat, gün, hafta veya ay).
Örneğin, hour
TimeUnit
değerine sahip 24
Interval
, kotanın 24 saat boyunca hesaplanacağı anlamına gelir.
<Interval ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.interval">1</Interval>
Varsayılan: | yok |
Bulunma: | Zorunlu |
Tür: | Tamsayı |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ref |
Bir kotanın aralığını içeren bir akış değişkeni belirtmek için kullanın. |
yok | İsteğe bağlı |
<TimeUnit> öğesi
Kota için geçerli zaman birimini belirtmek üzere kullanılır.
Örneğin, hour
TimeUnit
değerine sahip 24
Interval
, kotanın 24 saat boyunca hesaplanacağı anlamına gelir.
<TimeUnit ref="verifyapikey.VerifyAPIKey.apiproduct.developer.quota.timeunit">month</TimeUnit>
Varsayılan: | yok |
Bulunma: | Zorunlu |
Tür: |
Dize. |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ref | Bir kotanın zaman birimini içeren bir akış değişkeni belirtmek için kullanın. ref
açık aralık değerine göre önceliklidir. ref çalışma zamanında çözülmezse değer kullanılır. |
yok | İsteğe bağlı |
<StartTime> öğesi
type
calendar,
olarak ayarlandığında, herhangi bir uygulamadan istek alınıp alınmadığına bakılmaksızın kota sayıcısının saymaya başlayacağı tarihi ve saati belirtir.
Örneğin:
<StartTime>2017-7-16 12:00:00</StartTime>
Varsayılan: | yok |
Bulunma: | type calendar olarak ayarlandığında gereklidir. |
Tür: |
ISO 8601 tarih ve saat biçiminde dize. |
<Distributed> öğesi
Edge kurulumu, istekleri işlemek için bir veya daha fazla Mesaj İşleyici kullanabilir. Politikanın merkezi bir sayaç tutması ve bu sayacı tüm Mesaj İşleyicileriyle sürekli olarak senkronize etmesi gerektiğini belirtmek için bu öğeyi true
olarak ayarlayın. Mesaj işleyiciler, kullanılabilirlik bölgeleri ve/veya bölgeler arasında olabilir.
false
varsayılan değerini kullanırsanız her Mesaj İşleyicinin sayısı paylaşılmadığı için kotanızı aşabilirsiniz:
<Distributed>true</Distributed>
Sayaçların senkronize edildiğinden ve her istekte güncellendiğinden emin olmak için <Distributed>
ve <Synchronous>
değerlerini true olarak ayarlayın:
<Distributed>true</Distributed> <Synchronous>true</Synchronous>
Varsayılan: | yanlış |
Bulunma: | İsteğe bağlı |
Tür: | Boole |
<Synchronous> öğesi
Dağıtılmış kota sayacını senkronize olarak güncellemek için true
olarak ayarlayın. Bu, sayacın güncellenmesinin API'ye yapılan bir istekte kotanın kontrol edildiği anda yapıldığı anlamına gelir. Kotanın üzerindeki API çağrılarına izin vermemeniz gerekiyorsa true
olarak ayarlayın.
Kota sayacını eşzamansız olarak güncellemek için false
olarak ayarlayın. Bu, merkezi depoda kota sayacının ne zaman asenkron olarak güncellendiğine bağlı olarak, kotayı aşan bazı API çağrılarının geçebileceği anlamına gelir. Ancak eşzamanlı güncellemelerle ilişkili olası performans etkileriyle karşılaşmazsınız.
Varsayılan asenkron güncelleme aralığı 10 saniyedir. Bu asenkron davranışı yapılandırmak için AsynchronousConfiguration
öğesini kullanın.
<Synchronous>false</Synchronous>
Varsayılan: | yanlış |
Bulunma: | İsteğe bağlı |
Tür: | Boole |
<AsynchronousConfiguration> öğesi
Politika yapılandırma öğesi <Synchronous>
mevcut değilse veya mevcut olup false
değerine ayarlanmışsa dağıtılan kota sayaçları arasında senkronizasyon aralığını yapılandırır.
SyncIntervalInSeconds
veya SyncMessageCount
alt öğelerini kullanarak bir süre veya mesaj sayısı geçtikten sonra senkronize edebilirsiniz.
Bu iki grup birlikte kullanılamaz. Örneğin,
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
veya
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
Varsayılan: | SyncIntervalInSeconds = 10 saniye |
Bulunma: | İsteğe bağlıdır; <Synchronous> true olarak ayarlandığında yoksayılır. |
Tür: |
Yerleşke |
<AsynchronousConfiguration>/<SyncIntervalInSeconds> öğesi
Asenkron güncellemelerin 10 saniyelik bir aradan sonra gerçekleştirildiği varsayılan davranışı geçersiz kılmak için bunu kullanın.
<AsynchronousConfiguration> <SyncIntervalInSeconds>20</SyncIntervalInSeconds> </AsynchronousConfiguration>
Senkronizasyon aralığı, Sınırlar konusunda açıklandığı şekilde en az 10 saniye olmalıdır.
Varsayılan: | 10 |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<AsynchronousConfiguration>/<SyncMessageCount> element
Kota güncellemeleri arasında tüm Apigee mesaj işleyicilerinde istek sayısını belirtir.
<AsynchronousConfiguration> <SyncMessageCount>5</SyncMessageCount> </AsynchronousConfiguration>
Bu örnekte, kota sayısının her Apigee Edge mesaj işleyicisinde 5 istekte bir güncellendiği belirtilmektedir.
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
<Identifier> öğesi
Politikayı, bir akış değişkenine göre benzersiz sayaçlar oluşturacak şekilde yapılandırmak için <Identifier>
öğesini kullanın.
Bu öğeyi kullanmazsanız politika, kotaya uygulanan tek bir sayaç kullanır.
Bu öğe, aşağıdaki Apigee Topluluğu yayınında da ele alınmıştır: http://community.apigee.com/questions/2807/how-does-the-edge-quota-policy-work-when-no-identi.html.
<Identifier ref="verifyapikey.verify-api-key.client_id"/>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: |
Dize |
Özellikler
Özellik | Açıklama | Varsayılan | Varlık |
---|---|---|---|
ref |
İstek için kullanılacak sayacı tanımlayan bir akış değişkeni belirtir. Tanımlayıcı, her uygulamaya, uygulama kullanıcısına, uygulama geliştiricisine, API ürününe veya başka bir özelliğe özgü bir HTTP başlığı, sorgu parametresi, form parametresi ya da mesaj içeriği olabilir. Uygulamaları benzersiz şekilde tanımlamak için en yaygın olarak kullanılan Bazı durumlarda, güvenlik politikası bulunmadığında olduğu gibi |
Yok | İsteğe bağlı |
<MessageWeight> öğesi
Her iletiye atanan ağırlığı belirtmek için kullanılır. Örneğin, diğerlerinden daha fazla bilgi işlem kaynağı tüketen istek mesajlarının etkisini artırmak için mesaj ağırlığını kullanın.
Örneğin, POST mesajlarını GET mesajlarına kıyasla iki kat daha "ağır" veya pahalı olarak saymak istiyorsunuz. Bu nedenle, MessageWeight
değerini POST için 2'ye, GET için 1'e ayarlarsınız. İsteğin sayacı etkilememesi için MessageWeight
değerini 0 olarak bile ayarlayabilirsiniz. Bu örnekte, kota dakikada 10 mesajsa ve POST istekleri için MessageWeight
değeri 2
ise kota, 10 dakikalık herhangi bir aralıkta 5 POST isteğine izin verir. Sayaç sıfırlanmadan önce yapılan ek POST veya GET istekleri reddedilir.
MessageWeight
değerini temsil eden bir değer, bir akış değişkeni ile belirtilmelidir ve HTTP üstbilgilerinden, sorgu parametrelerinden, XML veya JSON istek yükünden ya da başka bir akış değişkeninden alınabilir. Örneğin, weight
adlı bir başlıkta ayarlarsanız:
<MessageWeight ref="message_weight"/>
Varsayılan: | Yok |
Bulunma: | İsteğe bağlı |
Tür: |
Tamsayı |
Akış değişkenleri
Bir kota politikası yürütüldüğünde aşağıdaki önceden tanımlanmış Flow değişkenleri otomatik olarak doldurulur. Akış değişkenleri hakkında daha fazla bilgi için Değişkenler referansı başlıklı makaleyi inceleyin.
Değişkenler | Tür | İzinler | Açıklama |
---|---|---|---|
ratelimit.{policy_name}.allowed.count | Uzun | Salt Okunur | İzin verilen kota sayısını döndürür |
ratelimit.{policy_name}.used.count | Uzun | Salt Okunur | Bir kota aralığında kullanılan mevcut kotayı döndürür |
ratelimit.{policy_name}.available.count | Uzun | Salt Okunur | Kota aralığındaki mevcut kota sayısını döndürür |
ratelimit.{policy_name}.exceed.count | Uzun | Salt Okunur | Kota aşıldıktan sonra 1 döndürür. |
ratelimit.{policy_name}.total.exceed.count | Uzun | Salt Okunur | Kota aşıldıktan sonra 1 döndürür. |
ratelimit.{policy_name}.expiry.time | Uzun | Salt Okunur |
Kotanın ne zaman sona ereceğini ve yeni kota aralığının ne zaman başlayacağını belirleyen UTC zamanını milisaniye cinsinden döndürür. Kota politikası türü |
ratelimit.{policy_name}.identifier | Dize | Salt Okunur | Politikaya ekli (istemci) tanımlayıcı referansını döndürür |
ratelimit.{policy_name}.class | Dize | Salt Okunur | Müşteri tanımlayıcısıyla ilişkili sınıfı döndürür |
ratelimit.{policy_name}.class.allowed.count | Uzun | Salt Okunur | Sınıfta tanımlanan izin verilen kota sayısını döndürür |
ratelimit.{policy_name}.class.used.count | Uzun | Salt Okunur | Bir sınıftaki kullanılan kotayı döndürür |
ratelimit.{policy_name}.class.available.count | Uzun | Salt Okunur | Sınıftaki kullanılabilir kota sayısını döndürür |
ratelimit.{policy_name}.class.exceed.count | Uzun | Salt Okunur | Geçerli kota aralığında sınıftaki sınırı aşan isteklerin sayısını döndürür |
ratelimit.{policy_name}.class.total.exceed.count | Uzun | Salt Okunur | Tüm kota aralıkları genelinde sınıftaki sınırı aşan isteklerin toplam sayısını döndürür. Yani tüm kota aralıkları için class.exceed.count değerinin toplamıdır. |
ratelimit.{policy_name}.failed | Boole | Salt Okunur |
Politikanın başarısız olup olmadığını (doğru veya yanlış) belirtir. |
Hata referansı
Bu bölümde, bu politika bir hatayı tetiklediğinde döndürülen hata kodları ve hata mesajlarının yanı sıra Edge tarafından ayarlanan hata değişkenleri açıklanmaktadır. Hata kuralları geliştirirken bu bilgilerin farkında olmanız önemlidir. hoşuma gitmesi için bir fırsattır. Daha fazla bilgi için Bilmeniz gerekenler Politika hataları ve Kullanım sorun.
Çalışma zamanı hataları
Bu hatalar, politika yürütüldüğünde ortaya çıkabilir.
Hata kodu | HTTP durumu | Neden | Düzelt |
---|---|---|---|
policies.ratelimit.FailedToResolveQuotaIntervalReference |
500 | <Interval> öğesi Kota politikası içinde tanımlanmamışsa gerçekleşir. Bu öğe
zorunludur ve kotaya uygulanabilir zaman aralığını belirtmek için kullanılır. Zaman aralığı
<TimeUnit> öğesiyle tanımlanan şekilde dakika, saat, gün, hafta veya ay olabilir. |
build |
policies.ratelimit.FailedToResolveQuotaIntervalTimeUnitReference |
500 | <TimeUnit> öğesi Kota politikası içinde tanımlanmamışsa gerçekleşir. Bu öğe
zorunludur ve kotaya uygulanacak zaman birimini belirtmek için kullanılır. Zaman aralığı
dakika, saat, gün, hafta veya ay biçiminde olabilir. |
build |
policies.ratelimit.InvalidMessageWeight |
500 | <MessageWeight> öğesinin değeri bir akış değişkeni aracılığıyla belirtilirse gerçekleşir
geçersiz (tam sayı olmayan bir değer). |
build |
policies.ratelimit.QuotaViolation |
500 | Kota sınırı aşıldı. | Yok |
Dağıtım hataları
Hata adı | Neden | Düzelt |
---|---|---|
InvalidQuotaInterval |
<Interval> öğesinde belirtilen kota aralığı farklıysa
bir tam sayı görüntülerse API proxy'sinin dağıtımı başarısız olur. Örneğin, kota aralığı
belirtilen <Interval> öğesinde 0.1 ise
API proxy'si başarısız oldu.
|
build |
InvalidQuotaTimeUnit |
<TimeUnit> öğesinde belirtilen zaman birimi desteklenmiyorsa
API proxy'sinin dağıtımı başarısız olur. Desteklenen zaman birimleri: minute
hour , day , week ve month .
|
build |
InvalidQuotaType |
Kotanın türü, <Quota> içindeki type özelliği tarafından belirtiliyorsa
öğesinin geçersiz olması durumunda API proxy'sinin dağıtımı başarısız olur. İlgili içeriği oluşturmak için kullanılan
desteklenen kota türleri şunlardır: default , calendar , flexi ve rollingwindow .
|
build |
InvalidStartTime |
<StartTime> öğesinde belirtilen saatin biçimi
geçersizse API proxy'sinin dağıtımı başarısız olur. Geçerli biçim şöyledir: yyyy-MM-dd HH:mm:ss
ISO 8601 tarih ve saat biçimi. Örneğin,
Örneğin, <StartTime> öğesinde belirtilen zaman
7-16-2017 12:00:00 sonrasında API proxy'sinin dağıtımı başarısız olur.
|
build |
StartTimeNotSupported |
Kota türü şu olmayan <StartTime> öğesi belirtilirse
calendar türündeyse API proxy'sinin dağıtımı başarısız olur. <StartTime> öğesi
yalnızca calendar kota türü için desteklenir. Örneğin, type özelliği
<Quota> öğesinde flexi veya rolling window olarak değiştirilirse
dağıtımı başarısız olur.
|
build |
InvalidTimeUnitForDistributedQuota |
<Distributed> öğesi true olarak, <TimeUnit> öğesi ise
second nedeniyle API proxy'sinin dağıtımı başarısız olur. second zaman birimi şunun için geçersiz:
dağıtılmış bir kota kullanır. |
build |
InvalidSynchronizeIntervalForAsyncConfiguration |
<SyncIntervalInSeconds> öğesi için
Kota politikasındaki <AsynchronousConfiguration> öğesi sıfırdan küçükse
dağıtımı başarısız olur. |
build |
InvalidAsynchronizeConfigurationForSynchronousQuota |
Kota politikasında <AsynchronousConfiguration> öğesinin değeri true olarak ayarlanırsa bu ayar aynı zamanda
<AsynchronousConfiguration> öğesi kullanılarak tanımlanmış eşzamansız bir yapılandırma varsa ve
API proxy'sinin dağıtımı başarısız olur. |
build |
Hata değişkenleri
Bu değişkenler, politika bir hatayı tetiklediğinde ayarlanır. Daha fazla bilgi için Bilmeniz gerekenler hakkında daha fazla bilgi edinin.
Değişkenler | Konum | Örnek |
---|---|---|
fault.name="fault_name" |
fault_name, yukarıdaki Çalışma zamanı hataları tablosunda listelendiği gibi hatanın adıdır. Hata adı, hata kodunun son kısmıdır. | fault.name Matches "QuotaViolation" |
ratelimit.policy_name.failed |
policy_name, hataya neden olan politikanın kullanıcı tarafından belirtilen adıdır. | ratelimit.QT-QuotaPolicy.failed = true |
Örnek hata yanıtı
{ "fault":{ "detail":{ "errorcode":"policies.ratelimit.QuotaViolation" }, "faultstring":"Rate limit quota violation. Quota limit exceeded. Identifier : _default" } }
Örnek hata kuralı
<FaultRules> <FaultRule name="Quota Errors"> <Step> <Name>JavaScript-1</Name> <Condition>(fault.name Matches "QuotaViolation") </Condition> </Step> <Condition>ratelimit.Quota-1.failed=true</Condition> </FaultRule> </FaultRules>
Şemalar
İlgili konular
Kota, ani artış durdurma ve eşzamanlı oran sınırı politikalarını karşılaştırma