Trafik koruması, Microservices Engine (MSE) trafik koruma yeteneklerini Serverless App Engine (SAE) ile entegre eder ve bir uygulamaya ulaşan trafiği API düzeyinde kontrol eder. Trafik artışları sırasında veya aşağı akış bağımlılıkları dengesizleştiğinde uygulamanın kullanılabilirliğini korumak için hız sınırlama, eşzamanlılık yalıtımı, devre kesme ve kritik nokta parametre koruma kurallarını kullanın. Trafik koruması, trafik dağılımını saniye düzeyinde hassasiyetle analiz eder.
Ön koşullar
Bir uygulama dağıttınız.
MSE Mikroservis Yönetimi Enterprise Edition'ı etkinleştirdiniz.
MSE kullandığınızda ayrı olarak ücretlendirilirsiniz. MSE faturalandırması hakkında daha fazla bilgi için bkz. MSE Mikroservis Yönetimi Faturalandırması.
Sınırlamalar
Trafik koruması için aşağıdaki sınırlamalar geçerlidir:
Desteklenen uygulamalar — Trafik koruması yalnızca 8 Kasım 2023 tarihinde veya sonrasında oluşturulan mikroservis uygulamaları için geçerlidir.
Kuyruğa alma aktarım hızı — Hızı sınırlandırılan istekler kuyruğa alındığında, QPS değerini 1.000'den büyük olacak şekilde ayarlamayın; bu değer 1 milisaniyelik bir istek aralığına karşılık gelir.
Apache Dubbo sürümleri — Apache Dubbo 2.7.0 ila 2.7.3 sürümleri özel davranışları desteklemez. Bu sürümlerde hızı sınırlandırılan bir istek
java.lang.RuntimeExceptiondöndürür ve içerikSentinelBlockedExceptionile hız sınırlama bilgilerini içerir.Özel yanıt türleri — Özel yanıt, tanımsız türlere sahip jenerikler içeren nesne türlerini desteklemez; örneğin
Map<K, V>veList<T>.
Koruma kuralı türü seçin
Trafik koruması beş kural türü sağlar ve her kural türünün SAE konsolunda kendi sekmesi bulunur. Aşağıdaki tabloda her kural türünün neyi kontrol ettiği ve nerede yapılandırıldığı açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Arayüz düzeyinde hız sınırlama kuralları ve kritik nokta parametre koruma kuralları, hızı sınırlandırılan trafiğin nasıl işleneceğini seçmenize de olanak tanır. Fast failure, aşırı istekleri anında engeller. Waiting in line, aşırı istekleri kuyruğa alarak isteklerin sabit bir hızda geçmesini sağlar ve genellikle zirve yük kaydırma için kullanılır. İstekleri kuyruğa alıyorsanız, Sınırlamalar bölümünde açıklanan kuyruğa alma aktarım hızı sınırına dikkat edin.
Trafik koruması sekmesine gidin
SAE uygulama listesinde, sayfanın üst kısmından bölgeyi ve ad alanını seçin, ardından uygulama ayrıntıları sayfasına gitmek için uygulamanın Application ID öğesine tıklayın.
Sol gezinme bölmesinde Microservices Governance > Traffic Governance seçeneğini belirleyin ve Traffic Protection sekmesine tıklayın.
Koruma kurallarını yapılandırın
Oluşturma akışı Configure Protection Behavior sihirbazını içeren kural türleri için son adım, bir kural tetiklendikten sonra bir isteğin alacağı yanıtı tanımlayan Associated Behavior seçmektir. Reddedilen istekler için özel bir yanıta ihtiyacınız yoksa varsayılan davranışı seçin. Davranış parametreleri ve oluşturma adımları için bkz. Davranışları yönetin.
Arayüz düzeyinde hız sınırlama kuralları, eşzamanlılık yalıtımı kuralları ve kritik nokta parametre koruma kuralları için Whether to open varsayılan olarak kapalıdır. Bu kurallar yalnızca bu anahtarı açtığınızda etkinleşir.
Arayüz düzeyinde hız sınırlama kurallarını yapılandırın
Arayüz düzeyinde bir hız sınırlama kuralı, bir uygulamanın veya hizmetin saniyedeki sorgu sayısını (QPS) izler. QPS belirtilen eşik değere ulaştığında kural trafiği anında engeller. Bu durum, ani trafik artışlarının uygulamayı aşırı yüklemesini önler ve yüksek kullanılabilirliği (HA) sağlar.
Interface-level Throttling sekmesine tıklayın ve Create Throttling Rule seçeneğine tıklayın.
-
Create Throttling Rule iletişim kutusunda aşağıdaki sihirbazları tamamlayın:
Select Protection Scenario sihirbazında API Type, Traffic Type ve API Name seçeneklerini belirleyin, ardından Next düğmesine tıklayın.
Configure Protection Rule sihirbazında aşağıdaki tabloda açıklanan parametreleri yapılandırın ve Next düğmesine tıklayın.
Configure Protection Behavior sihirbazında bir Associated Behavior seçin ve Create düğmesine tıklayın.
Aşağıdaki tabloda Configure Protection Rule sihirbazındaki parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
Kural, düzenleyebileceğiniz veya silebileceğiniz Interface-level Throttling sekmesinde görünür.
Örnek: Trafiğin sabit bir hızda geçmesi için zirve yükleri kaydırın
İstek trafiğinde dalgalanmalar yaşanır. Hız sınırlama, istekleri kuyruğa alarak zirve trafiğini geciktirir ve istekleri daha sonra işler. Bu yaklaşım mümkün olduğunca çok isteğe hizmet edilmesini ve kullanıcı deneyiminin korunmasını sağlar. Hız sınırlama kuralını aşağıdaki ayarlarla yapılandırın:
Sabit hız modu için Stand-alone QPS threshold değerini 5 olarak ayarlayın.
Flow control effect değerini Waiting in line olarak ayarlayın.
-
Timeout değerini 5 saniye olarak ayarlayın.
Sistem her 200 milisaniyede bir isteği işler ve aşırı görevleri kuyruğa alır. Bekleme süresi 5 saniye olduğu için, tahmini kuyruk bekleme süresi 5 saniyeyi aşan bir görev hızlı bir şekilde başarısız olur ve varsayılan hız sınırlama yanıtını (örneğin bir metin mesajı veya statik bir sayfa) doğrudan döndürür.
Eşzamanlılık yalıtımı kurallarını yapılandırın
Eşzamanlılık yalıtımı kuralı, sistem kararlığını korumak amacıyla bir API'nin veya bağımlılıklarının eşzamanlı iş parçacığı sayısını kontrol eder.
Concurrency Isolation sekmesine tıklayın ve Create Isolation Rule seçeneğine tıklayın.
-
Create Isolation Rule iletişim kutusunda aşağıdaki sihirbazları tamamlayın:
Select Protection Scenario sihirbazında API Type, Traffic Type ve API Name seçeneklerini belirleyin, ardından Next düğmesine tıklayın.
Configure Protection Rule sihirbazında aşağıdaki tabloda açıklanan parametreleri yapılandırın ve Next düğmesine tıklayın.
Configure Protection Behavior sihirbazında bir Associated Behavior seçin ve Create düğmesine tıklayın.
Aşağıdaki tabloda Configure Protection Rule sihirbazındaki parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
Kural, düzenleyebileceğiniz veya silebileceğiniz Concurrency Isolation sekmesinde görünür.
Örnek: Uygulamanız için yeterli kaynak sağlayın
Bir isteğin yanıt süresi arttığında eşzamanlı iş parçacığı sayısı da artar. Eşzamanlılık eşik değeri aştığında sistem, biriken görevler tamamlanıp eşzamanlı iş parçacığı sayısı azalana kadar aşırı istekleri reddeder. Bu yaklaşım hataları yalıtır ve kararsızlığı azaltır.
Örneğin, bir SQL deyiminin çalıştırılması 20 milisaniye sürer ve bu istek için saniyede 20 istek beklenir. Yalıtım kuralını aşağıdaki ayarlarla yapılandırın:
Interface Name değerini girin.
-
Concurrency threshold değerini 10 olarak ayarlayın.
Bu yapılandırmadan sonra, SQL deyimi bir kilitlenme veya performans sorunuyla karşılaşıp yavaş bir SQL deyimine dönüşse bile, istekler gelmeye devam etse de yalnızca 10 iş parçacığı kullanır. Kısa sürede çıkamayan sürekli istekler bu nedenle sürecin aktif iş parçacıklarını tüketemez. SQL deyimi normale döndüğünde eşzamanlılık hızla azalır. Eşzamanlılık önceden ayarlanmış eşiğin altına düştüğünde sistem istekleri reddetmeyi durdurur ve uygulamanın işleme kapasitesi hızla toparlanır. Bu yöntem, yanıt süresine göre kapasiteyi otomatik olarak ayarlar ve dengesiz uygulamaları yalıtır.
Devre kesme kurallarını yapılandırın
Bir devre kesme kuralı, uygulamanızın veya aşağı akış bağımlılıklarının yanıt süresini ya da hata oranını izler. Belirtilen eşik değere ulaşıldığında sistem, aşağı akış bağımlılığının önceliğini anında düşürür. Belirtilen süre boyunca sistem dengesiz kaynağı çağırmaz. Bu durum, uygulamanın dengesiz bir durumda çalışmasını önler ve yüksek kullanılabilirliği sağlar. Belirtilen süre dolduktan sonra sistem kaynağı yeniden çağırır.
Circuit Breaking Rules sekmesine tıklayın ve Create Circuit Breaking Rule seçeneğine tıklayın.
-
Create Circuit Breaking Rule iletişim kutusunda aşağıdaki sihirbazları tamamlayın:
Select Protection Scenario sihirbazında API Type ve API Name seçeneklerini belirleyin, ardından Next düğmesine tıklayın.
Configure Protection Rule sihirbazında aşağıdaki tabloda açıklanan parametreleri yapılandırın ve Create düğmesine tıklayın.
Aşağıdaki tabloda Configure Protection Rule sihirbazındaki parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kural, düzenleyebileceğiniz veya silebileceğiniz Circuit Breaking Rules sekmesinde görünür.
Örnek: Yavaş çağrılarda veya hatalarda devre kesmeyi tetikleyin
Üçüncü taraf bir hizmete yapılan bir çağrının yanıt vermesi çok yavaş olduğunda ve mevcut API'yi etkilediğinde veya sisteminiz üçüncü taraf içeriği görüntülerken hata döndürdüğünde devre kesme uygulayın. Her iki durum da aynı kural türünü kullanır ve yalnızca seçtiğiniz Threshold Type açısından farklılık gösterir.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Her iki yapılandırmada da istatistik zaman penceresi 1 saniyedir, pencerede en az 10 istek olmadıkça kural tetiklenmez ve devre kesme 10 saniye sürer. Yavaş çağrı örneğinde, 1000 milisaniyeden fazla süren bir istek yavaş istek olarak kabul edilir ve devre kesmeyi tetikleyen yavaş çağrı oranı %80'dir. Hata örneğinde, devre kesmeyi tetikleyen hata oranı %80'dir.
Kritik nokta parametre koruma kurallarını yapılandırın (RPC)
Bir uygulama için kritik nokta kurallarını yapılandırdıktan sonra sistem, kaynak çağrıları sırasında sıkça çağrılan parametreler olan istatistiksel parametreleri analiz eder. Sistem, kritik nokta kurallarına dayanarak kritik nokta parametreleri içeren kaynak çağrılarının hızını sınırlayarak sistem kararlığını korur. Bu kural türünü, kritik nokta parametresinin enstrümantasyon noktasındaki dizin konumuyla tanımlandığı RPC kaynak çağrıları için kullanın.
Hotspot Parameter Protection (RPC) sekmesine tıklayın ve Create Hotspot Parameter Protection Rule (RPC) seçeneğine tıklayın.
-
Create Hotspot Parameter Protection Rule (RPC) iletişim kutusunda aşağıdaki sihirbazları tamamlayın:
Select Protection Scenario sihirbazında API Name seçeneğini belirleyin ve Next düğmesine tıklayın.
Configure Protection Rule sihirbazında aşağıdaki tabloda açıklanan parametreleri yapılandırın ve Next düğmesine tıklayın.
Configure Protection Behavior sihirbazında bir Associated Behavior seçin ve Create düğmesine tıklayın.
Aşağıdaki tabloda Configure Protection Rule sihirbazındaki parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kural, düzenleyebileceğiniz veya silebileceğiniz Hotspot Parameter Protection (RPC) sekmesinde görünür.
Örnek: Ani satış sırasında kritik nokta ürün için istekleri kuyruğa alın
Ani satışlar ve diğer yoğun satın alma etkinlikleri sırasında yüksek trafik sistem yanıtlarını yavaşlatabilir veya hatta sistemin çökmesine neden olabilir. Sistem kararlığını korumak amacıyla, trafik bir eşiği aştıktan sonra popüler ürünler için trafiği kuyruğa alacak şekilde bir kritik nokta kuralı yapılandırabilirsiniz. Bu örnekte aşırı istekler reddedilmek yerine bir RPC API'si için kuyruğa alınır: Aynı ürüne yönelik istekler 1 saniye içinde 100'ü aşarsa kalan istekler kuyruğa alınır.
Interface Name değerini girin.
Statistical dimension değerini Number of requests olarak ayarlayın.
Statistical cycle time değerini 1 saniye ve Single machine threshold değerini 100 olarak ayarlayın.
Flow control effect değerini Waiting in line olarak ayarlayın.
-
Timeout değerini 30 milisaniye olarak ayarlayın.
Bu API 1 saniye içinde 100'den fazla kez çağrılırsa aşırı istekler kuyruğa alınır. 30 milisaniyeden daha uzun süre bekleyen bir istek anında başarısız olur.
Örnek: Aşırı sistem kaynağı tüketen sık çağrıları sınırlayın
Ani bir satış sırasında müşterilerin bazen siparişin teslimat adresini değiştirmesi gerekebilir. Bu tür çok sayıda değiştirme isteği önemli veritabanı yazma kaynaklarını tüketir. Müşterilerin değişikliği daha sonra yapması için aynı kritik nokta parametresini taşıyan eşzamanlı çağrıları sınırlayabilirsiniz.
Interface Name değerini girin.
Statistical dimension değerini Concurrent number olarak ayarlayın.
-
Statistical cycle time değerini 1 saniye ve Single machine threshold değerini 100 olarak ayarlayın.
Bu yapılandırma, her kritik nokta parametresi için en fazla 100 eşzamanlı çağrıya izin verir. Aşırı istekler reddedilir.
Kritik nokta parametre koruma kurallarını yapılandırın (HTTP isteği)
HTTP istekleri için kritik nokta parametre koruma kuralları, web hizmetleri sağlayan uygulamalara uygulanır. Bu kurallar, erişim isteklerindeki belirli parametrelerde granüler trafik şekillendirme gerçekleştirir. İş ve sistem kararlığını korumak amacıyla IP adresi, Host, Header ve URL Param gibi istek boyutlarına dayalı olarak kaynak çağrıları için trafiği şekillendirebilirsiniz.
Hotspot Parameter Protection (HTTP Request) sekmesine tıklayın ve Create Hotspot Parameter Protection Rule (HTTP Request) seçeneğine tıklayın.
-
Create Hotspot Parameter Protection Rule (HTTP Request) iletişim kutusunda aşağıdaki sihirbazları tamamlayın:
Select Protection Scenario sihirbazında API Name seçeneğini belirleyin ve Next düğmesine tıklayın.
Configure Protection Rule sihirbazında aşağıdaki tabloda açıklanan parametreleri yapılandırın ve Next düğmesine tıklayın.
Configure Protection Behavior sihirbazında bir Associated Behavior seçin ve Create düğmesine tıklayın.
Aşağıdaki tabloda Configure Protection Rule sihirbazındaki parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Kural, düzenleyebileceğiniz veya silebileceğiniz Hotspot Parameter Protection (HTTP Request) sekmesinde görünür.
Örnek: Kritik nokta ürününün ani satışı
Ani satışlar ve diğer yoğun satın alma etkinlikleri sırasında yüksek trafik sistem yanıtlarını yavaşlatabilir veya hatta sistemin çökmesine neden olabilir. Sistem kararlığını korumak amacıyla, trafik bir eşiği aştıktan sonra popüler ürünler için aşırı trafiği reddedecek şekilde bir kritik nokta parametre koruma kuralı yapılandırabilirsiniz. Bu örnek bir HTTP API'si için geçerlidir ve aşırı istekleri kuyruğa almak yerine reddeder.
Örneğin, aynı ürün için istekler 1 saniye içinde 100'ü aştıktan sonra aşırı istekleri reddetmek için aşağıdaki parametreleri yapılandırın. Bu kural, her bir ürün kimliği için saniyede en fazla 100 sipariş isteğine izin verir ve o ürün için aşırı sipariş isteklerini özel bir yanıtla reddeder.
Parameter Properties değerini URL parameter olarak ayarlayın.
URL parameter name için
stockIddeğerini girin.Threshold için saniyede 100 istek girin.
Throttling method değerini Fast failure olarak ayarlayın.
Parametre özelliklerinde kritik nokta ürününün kimliğine karşılık gelen parametre alanını seçin. Örneğin, URL parametrelerindeki bir stockId alanı istenen ürün kimliğini taşıyorsa parametre özelliğini URL parametresi olarak ayarlayabilir ve istekteki özelliğin alan adını parametre adı olarak girebilirsiniz.
Örnek: Kötü niyetli siparişleri önleyin
Bir promosyon etkinliği sırasında çok sayıda kötü niyetli sipariş isteği ürün envanterini veya sunucu kaynaklarını işgal eder. Bu durumda erişim isteklerinin sabit bir hızda geçmesini sağlamak için istekleri kaynak IP adreslerine göre kuyruğa alabilirsiniz. Bu durum, aşırı isteklerin hizmet kararlığını etkilemesini önler. Aşağıdaki kuralı yapılandırın:
Parameter Properties değerini Client IP olarak ayarlayın.
Threshold Type için varsayılan değer Request count'u koruyun.
Threshold için saniyede 100 istek girin.
Throttling method değerini Waiting in line olarak ayarlayın.
Timeout için 30 milisaniye girin.
-
Whether to open anahtarını açın.
Bu kural ile her kaynak IP adresinden gelen istekler 10 milisaniyede bir istek hızında geçer (1 saniye/100 = 10 milisaniye) ve aşırı istekler kuyruğa alınır. 30 milisaniyeden daha uzun süre bekleyen kuyruktaki bir istek anında başarısız olur.
Davranışları yönetin
Bir web davranışı, bir web enstrümantasyon noktası kaynağında bir kural tetiklendikten sonra özel bir yanıt döndürür. Örneğin, bir web API'si bir hız sınırlama kuralını tetikledikten sonra Blocked by Sentinel mesajını döndürebilir.
Bir davranış oluşturun
Behavior Management sekmesine tıklayın ve Create Behavior seçeneğine tıklayın.
-
Create Behavior iletişim kutusunda aşağıdaki tablolarda açıklanan parametreleri yapılandırın ve Create düğmesine tıklayın.
Aşağıdaki tabloda Resource Type değeri Web olarak ayarlandığında geçerli olan parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Aşağıdaki tabloda Resource Type değeri RPC olarak ayarlandığında geçerli olan parametreler açıklanmaktadır.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Oluşturduğunuz davranış, değiştirebileceğiniz veya silebileceğiniz Behavior Management sekmesinde görünür.
Bir davranışı mevcut bir kuralla ilişkilendirin
Bir davranış, kuralı oluştururken Configure Protection Behavior sihirbazında bir kural ile ilişkilendirilir. Zaten var olan bir kuralın davranışını değiştirmek için kuralı düzenleyin.
Traffic Protection sekmesine tıklayın ve ardından kural türünün sekmesine tıklayın.
Kuralı bulun ve Actions sütununda Edit seçeneğine tıklayın.
Select Protection Scenario ve Configure Protection Rule sihirbazlarını tamamlayın.
Configure Protection Behavior sihirbazında Associated Behavior açılır listesinden davranışı seçin. Alternatif olarak, bir davranış oluşturup kural ile ilişkilendirmek için Create Behavior seçeneğine tıklayın.
-
Save düğmesine tıklayın.
Bir davranışı ilişkilendirmeden önce aşağıdaki noktaları dikkate alın:
Default behavior — Hızı sınırlandırılan istekler için özel bir geri dönüş davranışına ihtiyacınız yoksa varsayılan davranışı seçin. Varsayılan davranışın API türü boştur.
Existing binding — Bir kural oluştururken bir davranış zaten API ile bağlıysa yeni davranış API'nin mevcut davranışının üzerine yazar.
API type — Bir davranış seçerken bir API türü seçmezseniz varsayılan davranış bağlanır. Bir API türü seçip ilgili türdeki bir davranışı bağladıktan sonra türü değiştiremezsiniz.