ASP.NET Core

Load shedding: sistemi çökmekten korumak için istekleri bırakmak

Yazar, trafik artışında yeniden deneme fırtınasının sistemi nasıl devirdiğini ve rate limiting ile circuit breaker'ın bu sorunu tek başına çözemediğini anlatıyor. Çözüm olarak sistem sağlığına göre istek bırakan load shedding yaklaşımını, ASP.NET Core ve Kestrel örnekleriyle öneriyor. Kestrel ve middleware katmanında uygulama fikirleri ASP.NET Core geliştiricileri için pratik.

Irina Scurtu Irina Dominte(Scurtu)
Yayın tarihi
Okuma süresi
7 dk okuma
agent çalıştırması #14
agent çalıştırması #14
Orijinale git irina.codes

Bu haberi bildir

Özette bir hata mı var, ya da bu içeriğin sahibi misin? Mesajın doğrudan bana e-posta olarak gelir.

Mesaj türü

Kilit noktalar

  • Load shedding, sistem sağlığına göre istek bırakır; rate limiting ise istemci kotasına bakar.
  • Aşırı yükte 429 yerine Retry-After başlıklı 503 Service Unavailable döndürün.
  • Kestrel'da MaxConcurrentConnections ile bağlantı sınırı koyun; isteği mümkün olan en erken katmanda reddedin.
  • Endpoint metadata ile öncelik tanımlayın; telemetri ve batch işleri önce, ödeme gibi istekleri en son bırakın.
  • Sabit CPU eşiği yerine gecikme eğilimini (ör. P99 artışı) izleyerek sheddingi başlatın.
  • Staging ortamında yük testiyle kabul edilen isteklerin P99 değerinin iyileştiğini doğrulayın.

Yük altındaki bir sistem ya kontrollü biçimde istek bırakır ya da plansız şekilde çöker. Yazar, rate limiting ve circuit breaker'ın yetmediği durumda devreye girecek bir teknik olarak load shedding'i öne çıkarıyor. Bu yaklaşım, isteği kimin gönderdiğine bakmadan sistemin o anki sağlık durumuna göre istekleri reddeder ve uygun yanıt olarak 429 yerine Retry-After başlıklı 503 döndürmeyi önerir.

Yazı, isteklerin reddini mümkün olan en erken katmanda yapmanın maliyet farkını anlatıyor: Kestrel'da MaxConcurrentConnections gibi sınırlar, ardından özel middleware ve en son controller. Ayrıca endpoint metadata ile öncelik tanımlayıp telemetri gibi işleri önce bırakmayı, ödeme gibi istekleri korumayı öneriyor. Statik CPU eşiği yerine gecikme eğilimini izlemenin daha iyi olduğunu da belirtiyor.

Gerçek dünyada kullanımı

  • Yüksek trafikli bir e-ticaret API'si: kampanya anında ödeme isteklerini korurken analitik çağrılarını bırakmak.
  • Birden fazla istemcinin yeniden deneme yaptığı bir ASP.NET Core servisinde retry fırtınasını kesmek.
  • Health check ve telemetri uçları olan bir mikroservisi, bellek baskısı altında kontrollü şekilde daraltmak.

Neden önemli

Rate limiting ve circuit breaker'a ek olarak, yük arttığında hangi isteklerin hayatta kalacağını siz belirleyebilirsiniz. Doğru yanıt kodu ve önceliklendirme, istemcilerin yeniden deneme davranışını da olumlu etkiler.

Bu özet, Irina Scurtu üzerindeki orijinal yazıdan agent tarafından üretildi. Yazının tamamı ve tüm hakları ilgili yazara/yayıncıya aittir. Orijinal yazıya git

Benzer haberler

Geri bildirim

Bir hata mı buldun, bir fikrin mi var? Yazdığın mesaj doğrudan bana e-posta olarak gelir.

Mesaj türü