İçeriğe geç

Tekrarsız işlem

Aynı mantıksal istek birden fazla kez gelse bile ek yan etki üretmeyen işlem tasarımıdır. Anahtarın kapsamı, saklama süresi ve yarım kalan işlemlerin yönetimi kritik öneme sahiptir.

Idempotency · Yinelenen istek kontrolü

Bağlantılar · 3 dk okuma · Güncelleme:

Tüm kavramlar

Tekrarsız işlem nedir?

Tekrarsızlık, aynı mantıksal işlemin yinelenmesiyle ek bir yan etki oluşmamasını amaçlayan özelliktir. Ağ zaman aşımından sonra yeniden gönderilen kayıt isteğinin ikinci bir rezervasyon oluşturmaması buna örnektir. Birçok uygulama aynı mantıksal istek için sabit bir anahtar ve işlem durumu kaydı kullanır; tek yöntem bu değildir. Anahtarın kapsamı, saklama süresi ve başarısız işlemlerin davranışı tanımlanmalıdır. Yanıtın her alanının birebir aynı olması yerine, işin ek bir kez yapılmaması önemlidir.

Anahtar kapsamı neyi belirler

Anahtarın hangi alanlardan üretildiği, iki isteğin gerçekten aynı sayılıp sayılmayacağını belirler. Yalnızca gönderim zamanı veya her denemede yeniden üretilen istek kimliği gibi her seferinde değişen alanlar anahtara dahil edilirse, aynı katılım talebi iki kez işlenebilir. Tersine, anahtar çok dar seçilirse farklı iki talep yanlışlıkla tek sayılabilir. Bu nedenle hangi alanların iş anlamı taşıdığı önceden yazılı olarak belirlenmelidir.

Yarım kalan işlemler ve süre

Bir işlem tamamlanmadan zaman aşımına uğrarsa kayıt ara durumda kalabilir. Bu durumda yeni gelen aynı istek sonsuza kadar beklememeli; ara durum için bir geçerlilik süresi tanımlanmalıdır. Süre dolduktan sonra sistem işi yeniden deneyebilir, ancak dış sistemde ödeme veya bilet gibi bir kayıt zaten oluşmuş olabilir. Bu yüzden yeniden deneme öncesi dış sistemde durum sorgulanması gerekir.

Saklama ve yanıt boyutu

Tekrar eden isteğe aynı yanıtın dönebilmesi için ilk sonucun saklanması gerekir. Bu sonuç, kullanılan depolama katmanının boyut sınırını aşmamalıdır. Büyük yanıtlar, örneğin tüm katılımcı listesi, kayıt yerine yalnızca bir referans kimliği olarak saklanmalıdır. Ayrıca yanıt, serileştirilebilir yapıda olmalı; aksi halde kayıt yazılamaz ve işlem hata verir.

Temsili işletme örneği

Bir konser organizatörü, bilet satışında ödeme sağlayıcısının onay bildirimini alan bir sistem kurdu. Bildirim, ağ gecikmesi nedeniyle iki kez gönderildi. Sipariş numarasını anahtar olarak kullanan sistem ikinci bildirimi fark etti ve aynı biletleri yeniden üretmedi. Ancak ilk işlem yarıda kesilmiş olsaydı, sistem ara durumda kalan siparişi süre dolana kadar bekletecek ve sonra ödeme sağlayıcısında durum sorgulayacaktı. Bu senaryoda anahtarın yalnızca zaman damgasından oluşması, aynı siparişin iki kez biletlenmesine yol açardı. Temsili bir örnektir. Bu tür bir hata, katılımcının iki bilet alması ve giriş kapısında karışıklık yaşamasıyla fark edilir.

Anahtar kapsamı ve sonuç

Anahtar seçimiOlası sonuç
İşletme, işlem türü ve sipariş kimliğiAynı kapsam içindeki tekrarlar tanınır; farklı işlemler birbirinden ayrılır
Sipariş numarası ve gönderim zamanıHer yeniden deneme yeni sayılır
Gövdenin seçilmiş, normalize edilmiş iş alanlarıYalnız biçim değişikliklerinin yeni işlem sayılma riski azaltılabilir

Sık karıştırılan nokta

Yaygın yanlış: Tekrarsız işlem, her isteğin yalnızca bir kez gelmesi anlamına gelir. Oysa ağ tekrarları ve yeniden denemeler kaçınılmazdır; amaç istek sayısını değil yan etkiyi sınırlamaktır. Düzeltme: Sistem aynı isteğin birden fazla gelebileceğini varsayarak tasarlanmalıdır. Bu yaklaşım, yalnızca başarılı işlemler için değil, hata alan işlemler için de düşünülmelidir.

Uygulamada dikkat edilecekler

  1. Anahtar alanlarını bir tabloda listeleyin; her alanın zamana bağlı değişip değişmediğini ve iş anlamını ekibinizle birlikte yazılı olarak belirtin.
  2. Ara durumdaki kayıtlar için süre tanımlayın ve süre dolduğunda dış sistemde ödeme veya bilet durumunu sorgulayan bir adım ekleyin.
  3. Her yanıtın boyutunu ölçün; sınıra yaklaşan yanıtlar için yalnızca kayıt kimliği saklayacak bir alternatif hazırlayın.
  4. Test ortamında aynı isteği üç kez arka arkaya gönderin ve yalnızca bir kez biletleme, ödeme veya e-posta yan etkisinin oluştuğunu doğrulayın.

Sık sorulan sorular

Tekrarsız işlem, ödeme sistemlerinde tek başına yeterli midir?

Hayır. Tekrarsız işlem yalnızca sistemin kendi tekrarlarını yönetir. Ödeme sağlayıcısının bildirim sırası, dış sistemdeki durum ve iade süreçleri ayrıca izlenmelidir; bu konularda uzman görüşü almak uygun olur.

Anahtar süresi ne kadar olmalı?

Kesin bir süre yoktur; olası yeniden deneme ve geç gelen bildirim süreleri dikkate alınmalıdır. Süre dolunca aynı istek yeniden işlenebilir. Bu yüzden kalıcı iş kuralları, dış sistemin durumu ve depolama ihtiyacı birlikte değerlendirilmelidir.

Teknik kaynak

AWS · Tekrarsız işlem

Teknik tanım için birincil kaynağa başvurulmuştur. İşletme senaryosu açıklama amacıyla hazırlanmış temsili bir örnektir.

İlgili kavramlar