الهوية والموثوقية في الأنظمة المدفوعة بالأحداث: دليل عملي

مقدمة إلى الهندسة المعمارية الموجهة بالأحداث والمعرفة

صعود الهندسة المعمارية الموجهة بالأحداث

غالبًا ما تعتمد أنظمة التجارة الإلكترونية الحديثة على الهندسة المعمارية الموجهة بالأحداث لضمان التوسعية والاستجابة. على سبيل المثال، عندما يقوم المستخدم بإجراء طلب، يتم تشغيل أحداث مثل “تم وضع الطلب”، “تم معالجة الدفع”، و”تم تحديث المخزون” بشكل غير متزامن.  

لماذا تهم المعرفة في النظم الموزعة

في النظم الموزعة، يمكن تكرار الأحداث أو إعادة محاولتها بسبب فشل الشبكة، مما يؤدي إلى مشاكل مثل تكرار الطلبات أو تعديلات الجرد غير الصحيحة. المعرفة تضمن أن معالجة حدث متكررة مرارًا وتكرارًا تؤدي إلى نفس النتيجة كما لو تمت معالجتها مرة واحدة.  

فهم المعرفة

ما هي المعرفة؟

تضمن المعرفة أن يكون للعملية نفس التأثير بغض النظر عن عدد مرات تنفيذها. على سبيل المثال، إذا تم استدعاء واجهة برمجة التطبيقات “وضع الطلب” مرتين بسبب خطأ في الشبكة، يجب إنشاء طلب واحد فقط.

المعرفة مقابل آليات تحمل الأخطاء الأخرى

تركز المعرفة على الصحة تحت عمليات المحاولة، بينما تتعامل آليات تحمل الأخطاء مثل المحاولات المتكررة أو مفتاحيات الدوائر مع الأخطاء ولكن قد لا تمنع التكرارات.

تحديات تحقيق المعرفة

أسباب تكرار الأحداث الشائعة

  • فشل الشبكة: يمكن لبوابة واجهة برمجة التطبيقات مثل بوابة AWS API أن تعيد محاولة طلب إذا لم يتم استلام الاستجابة بسرعة.  
  • إعادة المحاولات وتأخيرات التأكيد: يمكن أن تعيد بوابة الدفع حدث “تأكيد الدفع” إذا تأخر التأكيد.  
  • المنتجون أو المستهلكون الخاطئون: يمكن أن يخرج خدمة تطبيقات المتجر الإلكتروني أحداث “تم إنشاء الطلب” مرتين بسبب خطأ في النظام.  

المخاطر المحتملة بدون تكرارية العمليات

  • تناقضات البيانات: قد يؤدي معالجة أحداث تحديث الجرد المكررة إلى مستويات جرد غير صحيحة.  
  • فشل منطق الأعمال: تحصيل الثمن من العميل مرتين لنفس الطلب يضر بالثقة ويخلق مشاكل في استرداد المبلغ.  

مخطط تدفق عملية التجارة الإلكترونية

يوضح الرسم التخطيطي التالي تسلسل العمليات والتفاعلات بين مكونات مختلفة لمنصة التجارة الإلكترونية. يبرز رحلة العميل من تصفح المنتجات إلى إتمام عملية الشراء وتتبع الطلب. عادةً ما يتضمن هذا الرسم التخطيطي العمليات الأساسية مثل تفاعلات المستخدم، وسير عمل النظام الخلفي، ومعالجة المدفوعات، وتحديثات المخزون، وآليات التسليم. يوفر التدفق رؤية شاملة حول كيفية تفاعل المكونات المختلفة لتقديم تجربة تسوق سلسة. بالإضافة إلى ذلك، فإن تنفيذ idempotency في سير العمل الحرجة، مثل معالجة المدفوعات وتحديثات المخزون، يضمن أن النظام يظل موثوقًا ومتسقًا، حتى في مواجهة مشاكل الشبكة أو المحاولات المتكررة. يمكن أن يسهل اعتماد بعض خدمات AWS مثل AWS SQS قوائم FIFO، DynamoDB، وSNS بشكل كبير تنفيذ idempotency في الهياكل المعتمدة على الأحداث.

العمليات الرئيسية في الرسم التخطيطي

1. تصفح المستخدم والبحث

  • يقوم المستخدمون بتصفح كتالوج المنتجات أو البحث عن عناصر محددة.
  • يسترجع النظام الخلفي البيانات من خدمة كتالوج المنتجات، وغالبًا ما يتم تخزينها مؤقتًا باستخدام AWS ElastiCache للحصول على نتائج أسرع.

2. إدارة قائمة الرغبات  

  • يمكن للمستخدمين إضافة عناصر إلى قائمة رغباتهم.  
  • العمليات تتسم بالـ idempotency لضمان عدم إضافة نفس المنتج عدة مرات.  

3. إضافة إلى السلة وإتمام الشراء

  • يتم إضافة المنتجات إلى عربة التسوق، مع ضمان ضبط الكمية المتكررة لمنع التكرار.
  • عند الخروج، يتحقق النظام من محتويات العربة ويحسب السعر الإجمالي.

4. معالجة الدفع

  • يبدأ بوابة الدفع المعاملة.
  • تضمن الهوية المتكررة معالجة دفعة واحدة حتى في حالة تكرار المحاولات بسبب انتهاء مهلة البوابة.

5. وضع الطلب

  • عند نجاح الدفع ، يتم تشغيل حدث “وضع الطلب”.
  • ينشئ النظام سجل الطلب ، وتضمن الهوية المتكررة عدم إنشاء طلبات مكررة.

6. تحديث المخزون

  • يتم ضبط المخزون بناءً على الطلب المضاف.
  • يضمن التحديث المتكرر مستويات الأسهم الدقيقة حتى مع الأحداث المكررة أو إعادة المحاولة.

7. تنفيذ الطلب والتسليم

  • يتقدم حالة الطلب عبر مراحل مثل “المعالجة” و “الشحن” و “التسليم”.
  • تضمن التحديثات المتكررة تجنب التغييرات الخاطئة في الحالة من الأحداث المكررة.

8. تتبع الطلبات والإشعارات

  • يمكن للمستخدمين التحقق من حالة طلباتهم.
  • يتم إرسال الإشعارات (على سبيل المثال ، البريد الإلكتروني / SMS) بطريقة متكررة لتجنب إرسال البريد المزعج للمستخدمين بالتكرار.

متطلبات الهوية المتكررة

1. تحديثات العربة

يجب أن يحدث إضافة نفس المنتج مرتين الكمية ، وليس إنشاء إدخالات عربة مكررة.

  • التنفيذ: استخدم معرف فريد لعنصر السلة وتحديث شرطي في DynamoDB.

2. بوابة الدفع

يجب ألا تؤدي محاولات إعادة الدفع إلى تكرار الشحنات.

  • التنفيذ: استخدم مفتاح الهوية المميز المخزن في DynamoDB لتتبع المعاملات المكتملة.

3. وضع الطلب

يجب ألا تنشئ “أحداث الطلب الأنشئت” المكررة من محاولة إعادة طلب طلبات متعددة.

  • التنفيذ: استخدم معرف طلب فريد وعملية PutItem الشرطية في AWS DynamoDB.

4. تحديثات المخزون

يجب أن تأخذ مستويات الأسهم في الاعتبار محاولات الإعادة لتجنب الحد الزائد.

  • التنفيذ: استخدم قفل موزع (على سبيل المثال، مع AWS DynamoDB TTL) للتعامل مع التحديثات المتزامنة.

5. الإشعارات

يجب إرسال إشعارات البريد الإلكتروني أو رسائل النص المُشغّلة بواسطة حدث مرة واحدة فقط.

  • التنفيذ: استخدم مفتاح تكرار مع خدمات مثل Amazon Simple Notification Service (SNS).

الاستنتاج

في الأنظمة التي تعتمد على الحدث، خاصة في منصات التجارة الإلكترونية والهندسة المعمارية السحابية مثل AWS، الهوية الفريدة ضرورية لضمان الموثوقية ومقاومة الأخطاء واتساق البيانات. من خلال تنفيذ أنماط الهوية الفريدة القوية والاستفادة من الأدوات مثل DynamoDB و SQS و SNS، يمكن للمطورين التقليل من المخاطر الناتجة عن إعادة المحاولات والأحداث المكررة. يوضح هذا الدليل كيفية اعتماد هذه الممارسات ليس فقط تعزيز موثوقية النظام ولكن أيضًا بناء الثقة مع المستخدمين من خلال تقديم تجارب سلسة وخالية من الأخطاء. مع زيادة الطلب على أنظمة قابلة للتحمل وقابلة للتوسيع، يصبح تحقيق الهوية الفريدة ركيزة أساسية في تصميم البرمجيات الحديثة.

Source:
https://dzone.com/articles/idempotency-and-reliability-in-event-driven-systems