Dayanıklılık ve hata yönetimi
Timeout, retry ve idempotency key
Yanıt gelmedi diye işlem olmadı sanma.
Kavramı anlayalım
Client timeout bağlantıyı bırakabilir ama sunucudaki işlem zaten commit edilmiş olabilir. DNS/connect/TLS/response timeout ve toplam deadline farklı kapsamlar taşır. Yeni denemelerin aynı toplam bütçeyi aşmasına izin verme. İptal sinyali server ve DB’ye iletilse bile rollback sonucu garanti edilmez; akışın sözleşmesi önemlidir.
Idempotency key uygulamanın tekrar POST’ları aynı operasyonla ilişkilendirmesini sağlayan tasarımdır; bütün sunucularda otomatik tanımlı sihirli davranış değildir. Key kapsamı, body fingerprint, expiry, concurrent request ve saklanan sonuç politikası belirlenmelidir. Aynı key farklı body ile gelirse çatışma kabul edilmelidir.
GET’i retry etmek genellikle daha uygun olsa da genel retry her hata için doğru değildir. 400/403 gibi kalıcı sorunlara bekleyip tekrar göndermek çözüm olmaz. İş kimliğiyle durum sorgulama belirsiz sonucu çözebilir.
Duplicate ödeme, başvuru ve mesaj oluşmasını önlemek için.
Timeout olduğunda aynı POST’u yeni kimlikle tekrar göndermek.
Aynı konu. Üç farklı derinlik.
Client timeout → outcome unknownServer sonucu ayrıca doğrulanmalıdır.
Bu sayfa dış sunuculara istek göndermez. HTTP mesajları temsili, HTTP/1.1 biçiminde okunabilir gösterimlerdir; HTTP/2 ve HTTP/3 wire formatı değildir. example.test ayrılmış öğretim alan adıdır. Komut ve JavaScript örneklerini yalnız kendi test ortamında uygula; gerçek token veya cookie yayımlama.
Önce kendin dene.
Timeout işlem başarısız oldu anlamına mı gelir?
Çözümü ve açıklamasını göster
Timeout = unknown outcome until reconciledHer zaman değil; sonuç belirsiz olabilir.