Karar kaydı · ADR-002

Kritik yolun dışında senkron işleme yerine kuyruk

Kritik yanıt yolunun dışındaki yan etkiler bir kuyruk üzerinden asenkron çalışır. İstek hızlıca onaylanır; işleme, worker içinde mükerrer işlemleri önleyen (idempotent) biçimde gerçekleşir.

Bu nedir? · Karar kaydı (ADR)

ADR formatında belgelenmiş bir mimari karar — bağlam, incelenen seçenekler, gerekçe ve sonuçlar. Genel bir rehber değil, somut bir karar. Genel bakışa git

Durum
Kabul edildi
Kimlik
ADR-002
Gözden geçirme
Gecikme veya tutarlılık gereksinimleri değiştiğinde yeniden değerlendirilmelidir.

Bağlam

Pek çok işlem yan etkiler tetikler — bildirimler, dışa aktarımlar, üçüncü taraf sistem çağrıları, yeniden hesaplamalar. Bunların istek içinde senkron mu yoksa bir kuyruk üzerinden asenkron mu çalıştığı, gecikmeyi ve dayanıklılığı belirler.

Sorun

Senkron yan etkiler yanıt süresini dahil olan en yavaş sisteme bağlar ve bir yan etki başarısız olduğunda isteğin de başarısız olmasına yol açar. Asenkron işleme ayrışma sağlar, ancak beraberinde eventual consistency ve teslimat semantiği getirir.

Seçenekler

Neleri değer­len­dir­dik?

  1. A

    İstek içinde senkron

    Basit — ancak gecikme ve hatalar yan etkiye bağlanır.

  2. B

    Kuyruk üzerinden asenkron

    Ayrışmış ve daha dayanıklı — idempotency ve izleme gerektirir.

  3. C

    Fire-and-forget

    Backpressure yok, yeniden deneme yok, teslimat kanıtı yok.

Karar

Neye karar verdik?

Kritik yanıt yolunun dışındaki yan etkiler bir kuyruk üzerinden asenkron çalışır. İstek hızlıca onaylanır; işleme, worker içinde mükerrer işlemleri önleyen (idempotent) biçimde gerçekleşir.

Bu kararın gerekçesi

Kuyruk, yanıt süresini yavaş veya güvenilmez yan etkilerden ayırır ve yeniden denemeyi ile backpressure'ı açık hâle getirir. Idempotency, at-least-once teslimatın mükerrer etkiler üretmemesini sağlar. Yanıt için kritik olan her şey senkron kalır.

Sonuçlar

  • Dışarı aktarılan etkiler açısından sistem eventual consistent hâle gelir; kullanıcı arayüzü bunu dikkate almalıdır.
  • Kuyruk, worker'lar ve başarısız job'lar görünür olmalıdır.
  • Her asenkron işlem mükerrer işlemleri önleyen (idempotent) olacak şekilde tasarlanmalıdır.

Elenen alternatifler

  • Her şey senkronGecikmeyi ve hataları en yavaş yan etkiye bağlar.
  • Fire-and-forgetYeniden deneme ve teslimat kanıtı olmadan etkiler sessizce kaybolur.

Benzer bir kararın eşiğinde misiniz?

Bu kararları içgüdüyle vermiyoruz. Sisteminizdeki kararları doğrudan yönetimimizle konuşabilirsiniz.