Yeniden Deneme (Retry)
Sistem Analizi
Normal Davranış
Bir işlem sınıflandırılmış geçici bir hatayla (transient failure - örneğin HTTP 503, TCP bağlantı sıfırlama veya ağ zaman aşımı) karşılaştığında, yeniden deneme mekanizması hatayı keser ve tam rastgele seğirme (randomized jitter) ile üstel geri çekilme (exponential backoff) kullanarak bir gecikme hesaplar. Yapılandırılmış maksimum deneme sınırına kadar isteği tekrarlar, arayan tarafa kesin bir hata döndürmeden önce devre kesici (circuit breaker) durumlarını kontrol eder ve genel istek bağlamı (request context) son tarihlerine riayet eder.
Çöküş Davranışı
Rastgele seğirme (randomized jitter) ve devre kesicilerin (circuit breakers) yokluğunda, yeniden denemeler, arka uç hatalarının, yeniden deneme fırtınası (retry storm) veya gürleyen sürü (thundering herd) olarak bilinen feci şekilde büyümesine (amplification) neden olur. Bir veritabanı üç saniyeliğine takılırsa, binlerce eşzamanlı istemci örneği (client instances) anında üstel yeniden denemeler (exponential retries) üretir, trafik hacmini on katına çıkarır ve orijinal sorun çözüldükten sonra bile aşırı yüklenmiş veritabanını kalıcı olarak yanıtsız bırakır.
İş Sonuçları
Bir yeniden deneme mekanizmasının (retry mechanism) arızalanması - özellikle, üstel geri çekilme (exponential backoff) olmadan kötü yapılandırılmış yeniden denemeler - doğrudan bir 'yeniden deneme fırtınasına' (retry storm) yol açar. Bir aşağı akış (downstream) hizmeti zorlandığında, agresif yeniden denemeler yükü üstel olarak artırarak fiilen kendi kendine neden olunan bir Dağıtılmış Hizmet Reddi (DDoS) saldırısına neden olur. Bu, küçük yerel bir yavaşlamayı feci, sistemik bir kurumsal kesintiye (enterprise outage) dönüştürür.
Görsel Tezahür
"Günlük (log) akışlarının bulanıklaşacak kadar hızlı hareket etmesi ve yalnızca 'Bağlantı Reddedildi' (Connection Refused) ve 'Yeniden deneme girişimi 3 üzerinden 45' (Retry attempt 45 of 3) ile dolması."
Satirical Behavior
"The software equivalent of repeatedly pressing the crosswalk button and expecting the light to change faster."
Bilinen İsimler
Teknik Terminoloji
Hata Göstergeleri
Sistem Mimarisi
FAQ
Normalde nasıl davranır?
Bir işlem sınıflandırılmış geçici bir hatayla (transient failure - örneğin HTTP 503, TCP bağlantı sıfırlama veya ağ zaman aşımı) karşılaştığında, yeniden deneme mekanizması hatayı keser ve tam rastgele seğirme (randomized jitter) ile üstel geri çekilme (exponential backoff) kullanarak bir gecikme hesaplar. Yapılandırılmış maksimum deneme sınırına kadar isteği tekrarlar, arayan tarafa kesin bir hata döndürmeden önce devre kesici (circuit breaker) durumlarını kontrol eder ve genel istek bağlamı (request context) son tarihlerine riayet eder.
Nasıl çöker?
Rastgele seğirme (randomized jitter) ve devre kesicilerin (circuit breakers) yokluğunda, yeniden denemeler, arka uç hatalarının, yeniden deneme fırtınası (retry storm) veya gürleyen sürü (thundering herd) olarak bilinen feci şekilde büyümesine (amplification) neden olur. Bir veritabanı üç saniyeliğine takılırsa, binlerce eşzamanlı istemci örneği (client instances) anında üstel yeniden denemeler (exponential retries) üretir, trafik hacmini on katına çıkarır ve orijinal sorun çözüldükten sonra bile aşırı yüklenmiş veritabanını kalıcı olarak yanıtsız bırakır.
İş sonuçları nelerdir?
Bir yeniden deneme mekanizmasının (retry mechanism) arızalanması - özellikle, üstel geri çekilme (exponential backoff) olmadan kötü yapılandırılmış yeniden denemeler - doğrudan bir 'yeniden deneme fırtınasına' (retry storm) yol açar. Bir aşağı akış (downstream) hizmeti zorlandığında, agresif yeniden denemeler yükü üstel olarak artırarak fiilen kendi kendine neden olunan bir Dağıtılmış Hizmet Reddi (DDoS) saldırısına neden olur. Bu, küçük yerel bir yavaşlamayı feci, sistemik bir kurumsal kesintiye (enterprise outage) dönüştürür.
How does exponential backoff with jitter prevent retry storms in distributed systems?
Exponential backoff increases the wait time exponentially between consecutive failed attempts (e.g., 100ms, 200ms, 400ms), giving downstream systems time to recover. Adding randomized jitter spreads retry attempts across random intervals rather than synchronized spikes, preventing thousands of concurrent clients from hitting the backend at the exact same millisecond.
Why is it dangerous to retry non-idempotent operations?
Non-idempotent operations (such as credit card charges or inventory decrements) modify state each time they execute. If a network timeout occurs after the server successfully processes the request but before the client receives the acknowledgment, blindly retrying the operation causes duplicate charges or data corruption unless unique idempotency keys are enforced.
Sistemi keşfet
AI özeti
Retry is a RELIABILITY system in TinyCTO.tv. When an operation encounters a classified transient failure (such as an HTTP 503, TCP connection reset, or network timeout), the retry mechanism intercepts the error and calculates a delay using exponential backoff with full randomized jitter. It repeats the request up to a configured maximum attempt limit, checking circuit breaker states and respecting overall request context deadlines before returning a definitive failure to the caller.
