Kısıtlama (throttling), arka uç hizmetlerini aşırı isteklerden korur ve kademeli arızaları önler. Cloud-native API Gateway, belirli bir zaman penceresi içindeki istek hacmini sınırlayan rota düzeyinde kısıtlama ilkelerini destekler.
Kısıtlama ilkesi yapılandırma
Yapılandırdığınız kısıtlama eşiği, ağ geçidi düzeyindeki bir eşiktir. Bir ağ geçidi düğümü için kısıtlama eşiğini aşağıdaki formülü kullanarak hesaplayabilirsiniz: Ağ geçidi düzeyindeki kısıtlama eşiği / Düğüm sayısı. Hesaplanan kısıtlama eşiği ondalık bir değer ise, bu değer en yakın tamsayıya yukarı yuvarlanır. Örneğin, bir demo rotasının saniyedeki sorgu sayısı (QPS) 1001'dir. Ağ geçidinizde iki düğüm varsa, her bir ağ geçidi düğümündeki demo rotası için QPS sınırı 501'dir.
-
Cloud-native API Gateway örneği içinde veya dışında bir kısıtlama ilkesi yapılandırabilirsiniz.
Harici API
Cloud-native API Gateway konsoluna oturum açın. Sol gezinme bölmesinde API seçeneğine tıklayın. Üst gezinme çubuğunda bir bölge seçin.
Hedef API'ye tıklayın. Açılır listeden kısıtlama yapılandırmak istediğiniz örneği seçin veya All Instances seçeneğini belirleyin. Üst gezinme çubuğundaki örnek açılır listesinden hedef örneği seçin.
Routes bölümünde hedef rotaya tıklayın.
Dahili API
Cloud-native API Gateway konsoluna oturum açın. Sol gezinme bölmesinde Instance seçeneğine tıklayın. Üst gezinme çubuğunda bir bölge seçin.
Instance sayfasında hedef ağ geçidi örneğinin Kimliğine tıklayın. Sol gezinme bölmesinde API seçeneğine tıklayın ve ardından hedef API'yi seçin.
Routes bölümünde hedef rotaya tıklayın.
Configure Policy sekmesine tıklayın ve ardından Inbound Processing bölümünde Enable Policy/Plug-in seçeneğine tıklayın.
-
Bir kısıtlama ilkesi ekleyin. Seçenekler arasında Traffic Control, Concurrency Control ve Circuit Breaking bulunur.
Trafik Kısıtlama
Trafik kısıtlama kuralları, bir rotanın QPS değerini izler ve eşik değere ulaşıldığında trafiği hemen engelleyerek trafik artışlarından kaynaklanan arka uç hizmeti kesintilerini önler.
Traffic Control kartına tıklayın. Add Policy:Traffic Control panelinde parametreleri yapılandırın ve ardından Add seçeneğine tıklayın.
Parametre
Açıklama
Enable or Not
Trafik kontrolü ilkesini etkinleştirmek için bu anahtarı açın.
Overall QPS Threshold
Overall QPS Threshold.
Web Fallback Behavior
Web Fallback Behavior ayarını Return Specific Content veya Redirect to Specified Page olarak yapın.
Web Fallback Behavior ayarını Return Specific Content olarak yaptıysanız:
HTTP Status Code
Döndürülecek HTTP Status Code. Varsayılan değer 429'dur.
Type of Returned Content
Yanıt gövdesinin Type of Returned Content özelliği. Regular Text veya JSON seçebilirsiniz.
HTTP Text
Döndürülecek metin.
Web Fallback Behavior ayarını Redirect to Specified Page olarak yaptıysanız:
Redirect URL
Redirect URL.
Eşzamanlılık kontrolü
Eşzamanlılık kuralları, ağ geçidi tarafından işlenen toplam istek sayısını takip eder ve sayı belirtilen eşik değerine ulaştığında trafiği engeller; bu sayede yüksek eşzamanlılık senaryolarında arka uç hizmetlerinin kullanılabilirliği korunur.
Concurrency Control kartına tıklayın. Add Policy: Concurrency Control panelinde parametreleri yapılandırın ve ardından Add seçeneğine tıklayın.
Parametre
Açıklama
Enable or Not
Eşzamanlılık kuralını etkinleştirmek için bu anahtarı açın.
Overall Concurrency Threshold
Overall Concurrency Threshold.
Web Fallback Behavior
Web Fallback Behavior ayarını Return Specific Content veya Redirect to Specified Page olarak yapın.
Web Fallback Behavior ayarını Return Specific Content olarak yaptıysanız:
HTTP Status Code
Döndürülecek HTTP Status Code. Varsayılan değer 429'dur.
Type of Returned Content
Yanıt gövdesinin Type of Returned Content özelliği. Regular Text veya JSON seçebilirsiniz.
HTTP Text
Döndürülecek yanıt gövdesi.
Web Fallback Behavior ayarını Redirect to Specified Page olarak yaptıysanız:
Redirect URL
Redirect URL.
Devre Kesme
Devre kesme kuralları, bir rotadaki yanıt süresi (RT) veya hata oranı belirtilen eşik değerine ulaştığında devreye girer. Devre kesildiğinde, ağ geçidi arka uç hizmetlerini korumak amacıyla yapılandırılan süre boyunca o rotadaki tüm istekleri reddeder ve ardından çağrıları otomatik olarak yeniden başlatır.
Circuit Breaking kartına tıklayın. Add Policy: Circuit Breaking panelinde parametreleri yapılandırın ve ardından Add seçeneğine tıklayın.
Parametre
Açıklama
Enable or Not
Devre kesme kuralını etkinleştirmek için bu anahtarı açın.
Statistical Window Duration
Zaman penceresinin süresi. Geçerli değerler: 1 saniye ile 120 dakika arası.
Minimum Number of Requests
Devre kesmeyi tetiklemek için gereken minimum istek sayısı. Mevcut zaman penceresindeki istek sayısı bu değerin altındaysa, eşik koşulu karşılanmış olsa bile devre kesme tetiklenmez.
Threshold Type
Devre kesmeyi tetiklemek için kullanılan ölçüm. Slow Call Ratio (%) veya Exception Ratio (%) seçebilirsiniz.
-
Slow Call Ratio (%) seçerseniz, maksimum yanıt süresi olan bir Slow Call RT değeri ayarlamanız gerekir. Yanıt süresi bu değerden büyükse bir istek yavaş çağrı olarak kabul edilir. Kural etkinleştirildikten sonra, bir istatistiksel penceredeki istek sayısı minimum istek sayısını aşar ve yavaş çağrı oranı belirtilen eşiği geçerse, devre kesme süresi boyunca istekler reddedilir. Devre kesme süresinin ardından, devre kesici bir yoklama kurtarma durumuna geçer. Sonraki isteğin yanıt süresi belirtilen Slow Call RT değerinden azsa devre kapanır. Aksi takdirde devre tekrar açılır.
-
Exception Ratio (%) seçerseniz, devre kesmeyi tetikleyen hata oranını ayarlamanız gerekir. Kural etkinleştirildikten sonra, bir istatistiksel penceredeki iş mantığı hatalarının sayısı minimum istek sayısını aşar ve hata oranı eşiği geçerse, devre kesme süresi boyunca istekler reddedilir.
Slow Call RT
İzin verilen Slow Call RT (maksimum yanıt süresi).
Circuit Breaking Ratio Threshold
Yavaş çağrılar için yüzde eşiği. Bu eşik değere ulaşıldığında veya aşıldığında devre kesme tetiklenir. Geçerli değerler: 0 ile 100 (%).
Circuit Breaking Duration (s)
Devre kesmenin etkin kaldığı süre. Bu süre boyunca rotaya yapılan tüm istekler reddedilir.
Web Fallback Behavior
Web Fallback Behavior seçeneğini Return Specific Content veya Redirect to Specified Page olarak belirleyin.
Web Fallback Behavior ayarını Return Specific Content olarak yaptıysanız:
HTTP Status Code
Döndürülecek HTTP Status Code. Varsayılan değer 429'dur.
Type of Returned Content
Yanıt gövdesinin Type of Returned Content özelliği. Regular Text veya JSON seçebilirsiniz.
HTTP Text
Döndürülecek yanıt gövdesi.
Web Fallback Behavior ayarını Redirect to Specified Page olarak yaptıysanız:
Redirect URL
Redirect URL.
-
Sonuçları doğrulama
Test istekleri göndermek için aşağıdaki komutu çalıştırın:
curl -I http://121.196.XX.XX/demo/item/list //The ingress IP address of the gateway.
-
Kısıtlama ilkesi etkin değilse aşağıdakine benzer bir yanıt döndürülür:
HTTP/1.1 200 OK x-content-type-options: nosniff x-xss-protection: 1; mode=block cache-control: no-cache, no-store, max-age=0, must-revalidate pragma: no-cache expires: 0 x-frame-options: DENY content-type: application/json content-length: 86 date: Mon, 29 Nov 2021 08:28:00 GMT x-envoy-upstream-service-time: 4 server: istio-envoy -
Kısıtlama ilkesi etkinse, HTTP durum kodu 429 ile aşağıdakine benzer bir yanıt döndürülür.
HTTP/1.1 429 Too Many Requests x-local-rate-limit: true content-length: 18 content-type: text/plain date: Mon, 29 Nov 2021 08:28:01 GMT server: istio-envoy