مراجعv1الموثوقية

Idempotency وإعادة المحاولة

اجعل إعادة الإرسال آمنة، واربط المفتاح بنفس العملية والنطاق والنتيجة.

نموذج المفتاح

ينشئ العميل مفتاحًا فريدًا لكل عملية منطقية، ويحفظه حتى يعرف النتيجة النهائية. يعيد الخادم نفس النتيجة للعملية نفسها بدل تكرار الأثر.

  • اربط المفتاح بالـtenant والendpoint وهوية العملية.
  • احفظ hash للpayload لمنع إعادة المفتاح ببيانات مختلفة.
  • أعد response ثابتًا أو conflict واضحًا.
  • حدد TTL بما يناسب خطر المجال، لا مهلة شبكة فقط.

سياسة إعادة المحاولة

أعد المحاولة فقط للأخطاء الانتقالية، واستخدم exponential backoff مع jitter وسقف محاولات. لا تعِد 4xx الدائم أو رفض الصلاحية.

Backoff
delay = min(cap, base * 2^attempt) + random_jitter

التزامن

يجب أن يحمي الخادم نافذة السباق بقيد فريد أو قفل مناسب ومعاملة قاعدة بيانات. فحص ثم إنشاء دون حماية ذرية لا يحقق idempotency.