٠١ أنظمة موزّعة
منصة تسليم الأحداث — Webhooks موثوقة
مشروع ذاتي لتطبيق أنماط الموثوقية في أنظمة الإنتاج — Outbox ومفاتيح Idempotency وقاطع الدائرة — على خدمة Spring Boot لتسليم الأحداث.
- Java
- Spring Boot
- Spring Security
- Flyway
- Resilience4j
شكل ٠١ التسليم الموثوق للأحداث
- 2 نوعا رموز JWT — وصول قصير العمر، وتحديث منفصل
- 3 حالات قاطع الدائرة — مغلق، مفتوح، نصف مفتوح
- Flyway هجرات قاعدة بيانات مُرقّمة وقابلة لإعادة البناء
محاكاة للتصميم المستهدف — بعض أجزائه قيد التطوير، والقيم المعروضة ليست قياسات. اقرأ الرسم
- الخدمة: تحفظ السجل وحدث الإرسال في المعاملة نفسها (Transactional Outbox)، فلا يُكتب أحدهما دون الآخر.
- جدول Outbox: الأحداث تنتظر هنا حتى تُسلَّم — لا تضيع إن سقطت الخدمة أو تعطّل المستقبِل.
- المُرسِل: يسحب الأحداث المعلّقة ويرسلها مع مفتاح Idempotency، فيتجاهل المستقبِل أي تكرار.
- قاطع الدائرة (Resilience4j): بعد فشل متكرر يفتح ويوقف الإرسال مؤقتًا، ثم يجرّب طلبًا واحدًا (نصف مفتوح) قبل أن يُغلق من جديد.
- المستقبِل: نقطة الـ webhook لدى العميل. عطّلها من الزر أدناه وراقب ما يحدث.