Idempotency

Türkçe karşılığı: İdempotentlikAlan: Dağıtık Sistemler

Aynı mantıksal işlemin tekrar edilmesinin ilk başarılı uygulamadan sonra ek dış yan etki oluşturmamasını hedefleyen işlem özelliği.

İdempotentlik, aynı mantıksal işlemin tekrar uygulanmasının ilk başarılı sonuçtan sonra yeni dış yan etki üretmemesidir.

Dağıtık Sistemde Neden Gerekir?

Bir istemci timeout aldığında sunucunun işlemi hiç başlatmadığını bilemez. Sunucu işlemi tamamlamış fakat cevap kaybolmuş olabilir. İstemci aynı isteği kör biçimde tekrar gönderirse ikinci kayıt, ikinci ödeme veya ikinci dosya üretimi gibi yan etkiler oluşabilir.

Bu riski azaltmak için doğal iş anahtarı, idempotency key veya açık durum geçişi kullanılabilir. Anahtarın işlem sonucu ile hangi transaction sınırında ilişkilendirildiği önemlidir.

Exactly-Once ile Aynı Değildir

İdempotent bir işlem fiziksel olarak birden fazla kez yürütülebilir. Güvence, tekrarların gözlenen iş sonucunu çoğaltmamasıdır. Audit kaydı, dış servis çağrısı veya mesaj üretimi ayrıca idempotent tasarlanmamışsa yan etkiler yine çoğalabilir.

Retry ile İlişkisi

Retry ancak hata sınıfı ve işlem semantiği izin veriyorsa güvenlidir. Kritik Sistemlerde Güvenli Retry Tasarımı bu ilişkiyi uygulama açısından ayrıntılandırır.

İlgili: Idempotency Key, Retry, Transactional Outbox.

At-Most-Once ile Aynı Garanti Değildir

İdempotentlik çalıştırma sayısını sınırlamaz; tekrarların gözlenen sonucu çoğaltmamasını hedefler. At-most-once ise aynı işlemin ikinci kez yürütülmesini engellemeye çalışan farklı bir teslim/işleme garantisidir. Bir servis aynı idempotency key ile iki kez çağrılabilir ve iç kod iki kez başlayabilir; sonuç kaydı ve yan etkiler tek mantıksal işleme bağlanıyorsa dış davranış yine idempotent olabilir.

Bu nedenle idempotency key yalnız cache anahtarı gibi tutulmamalıdır. Anahtar, istek kimliği/parametre özeti ve sonuçla uygun transaction sınırında ilişkilendirilmezse iki eşzamanlı isteğin ikisi de "ilk" olduğunu sanabilir. HTTP düzeyinde idempotent yöntem kavramının normatif tanımı RFC 9110 §9.2.2 içindedir; uygulama düzeyindeki ödeme, mesaj veya dosya yan etkileri ayrıca tasarlanmalıdır. Uygulama ilişkisi: Güvenli Yeniden Deneme.

İlgili teknik yayınlar

Başlık veya özetinde bu kavrama doğrudan karşılık gelen yayınlar.