Table of Contents

ما هو الحدث الذي يقود الهندسة المعمارية ولماذا يهم الآن

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

المبادئ الأساسية لمحفوظات دحرة الأحداث

الاتصال المتزامن

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

الازدواج

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

احتمالية التحصيل

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

الاتساق في الأحداث

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

العناصر الرئيسية لنظام حركات الأحداث

المنتجون المثمرون

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

المستهلكون في المناسبات

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

مُسجّل رسالة/حدث حافلة

ويجلس السمسار بين المنتجين والمستهلكين، ويدير مسار الأحداث، والثبات، والتسليم، ويوفر آلية الفرز الجاهز للنشر التي تتيح التقلبات غير المستقرة، وتشمل السمات الرئيسية التي ينبغي البحث عنها ما يلي:

  • Persistence]: Events survive broker restarts.
  • Guaranteed delivery]: At-least-once or exactly-once semantics.
  • Ordering guarantees]: Within a partition or topic.
  • Scalability]: التقسيم الأفقي لمعالجة ارتفاع الناتج.
  • Dead-letter queues]: For failed message handling.

الموضوعات والقناة

وتنظم الأحداث في مواضيع أو قنوات، وتنظم مجموعات مواضيع ذات صلة بأحداث مثل: " أحداث - أحداث " أو " أحداث " ، و " مناسبات الدفع " ، و " جذام المواضيع " قرار تصميمي: حيث يتلقى المستهلكون والثروة الكثير من الأحداث غير ذات الصلة؛ وغرامة كبيرة جداً، كما أن لديك انفجار للمواضيع، ويتمثل النهج المشترك في رسم خرائط للمواضيع التي تُحددات أو مجموعات النطاقات.

When to use Event Driven Architecture vs. Request-Response

إن الهيئة ليست الخيار الصحيح لكل سيناريو، استخدمها عندما:

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

تجنب المؤسسة الإنمائية للأخشاب عندما:

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

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

أنماط الهندسة المعمارية المشتركة

الإخطار

ويُنشر أحدث نمط بسيط: حدث للوزن الخفيف مع بيانات ضئيلة (في كثير من الأحيان فقط نوع هويّة وحدث) لإخطار المستهلكين، ثم يتساءل المستهلكون عن المنتج للتفاصيل، مما يقلل حجم الحمل في حالة حدوثه، ولكن يُحدث الانقلابات لأن المستهلكين يجب أن يعرفوا كيفية استجواب المنتج.

Event-Carried State Transfer

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

الحدث

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

CQRS (Command Query Responsibility Segregation)

وتفصل اللجنة عن نماذج الكتابة (الطلب) والقراءة (الجديدة) وتولد القيادات أحداثاً تُستهلك لتحديث النماذج المطالعة، مما يتيح لك استخدام كل نموذج على نحو مستقل، مثلاً، باستخدام متجر كتب معتاد للغاية ومخزن مكتوب غير معتاد على نحو يُستدلى به على الاستفسارات المحددة، وكثيراً ما تستخدم هذه المقاييس في مصادرة للأحداث، ولكن يمكن أيضاً استخدامها بصورة مستقلة.

ساغا باترن

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

  • Choreography: كل خدمة تعرف ما حدث النشر التالي بعد إتمام صفقتها المحلية، وهذا أمر بسيط ولكن يمكن أن يكون صعباً تعقبه.
  • Orchestration]: يقوم منسق مركزي (مدير ساغا) بإرسال الأوامر والاستماع إلى الأحداث، واتخاذ القرار بشأن الخطوة التالية، مما يوفر رؤية أفضل، ولكنه يقدم نقطة مركزية للتنسيق.

وتشكل هذه المجموعة عنصرا أساسيا لضمان اتساق البيانات في النظم الموزعة، التي تكون متسقة في نهاية المطاف.

التكنولوجيات الشعبية للمؤسسة المعمارية للحدث

Apache Kafka

Kafka is the leading distributed streaming platform for high-throughput, fault-tolerant event processing. It organizes events into topics, supports partitioning for scalability, and provides strong ordering within partitions. Kafka retains events for a configurable period, enabling both realtime stream processing and historical replay. The ecosystem includes Kafka Streams, Kafka Connect, and a rich library

RabbitMQ

وشركة RabbitMQ هي وسيطة راشدة غنية بالصحافة تقوم بتنفيذ نظام AMQP وغيره من البروتوكولات، وهي تدعم المسار المرن من خلال التبادلات والاستفسارات، والنشر - الاختياري، وطرحات العمل، والملامح المتقدمة مثل تبادل الرسائل المميتة، والاستفسارات ذات الأولوية، ويسهل إنشاء وتشغيل قاعدة بيانات رابيت - ميكروتيكا، مما يجعلها خيارا جيدا للأفرقة الجديدة في هيئة التنمية الاقتصادية أو لاستخدامها في الحالات التي لا تتطلبها.

Amazon EventBridge

(د) إن ملتقى (الحدث) هو حافلة أحداث لا تُحصى تربط بين خدمات الأسلحة النووية، وتطبيقات نظام ساوس (SaS)، والتطبيقات الجمركية، وهي توفر سجلاً للكيماويات، وترشيح الأحداث، والتحول، وإدماج السكان الأصليين في وظائف لامبدا وخطوات، ولا تتطلب شركة EventBridge إدارة الهياكل الأساسية ونطاقاتها تلقائياً، بل هي مثالية للهيكلات المركزة لشبكة المائية، ولكنها قد تكون لها تكاليف أعلى في كل الأحداث في أحجام عالية جداً.

حافلة هجومية وخدمية

Azure Event Hubs is a big data streaming platform for telemetry ingestion, similar to Kafka. Azure Service Bus is a fully managed enterprise message broker for publish-subscribe and queues, with features like transactions, duplicate detection, and dead-lettering. Both integrate deeply with Azure’s ecosystem.

Google Cloud Pub/Sub

(ب) الشبكة العالمية (Pub) (البرنامج الفرعي) هي خدمة عالمية لإدارة كاملة، مع تقديم خدمات في الشرق الأوسط، والارتقاء التلقائي، وهي تدعم تقديم خدمات الدفع والسحب، وتدمج مع خدمات شركة غوغل كلود، وهي خيار قوي للهيكلات القائمة على برنامج المقارنات العالمية.

تصميم المناسبات لنظامك

مناسبة الجاذبية

الأحداث يجب أن تمثل أحداثاً تجارية ذات معنى على المستوى الصحيح من الأعمال الشاقة، تجنب الأحداث التقنية مثل "تحديث صف قواعد البيانات" بدلاً من ذلك، أحداث نموذجية حول مفاهيم النطاقات: "المسجلة،" "الموقع المُتقطع" "الضربة" "الضربة الأولى"

اتفاقيات الاحتفال

استخدمي التوتر الماضي لبيان شيء حدث بالفعل، بما في ذلك سياق المجال لتجنب الغموض: "التلفزيون والفاتورة المُتَوَقَّد" ضد "القطع والفاتورة المُتَوَقّلة".

تصميم الشعارات

وينبغي أن تشمل مادة الكيماويات الموحدة البيانات الوصفية:

  • eventId]: Unique identifier for deduplication.
  • eventType]: نوع الحدث.
  • Timestamp]: When the event occurred.
  • version]: Schema version.
  • correlationId]: للتعقب عبر الخدمات.

وينبغي أن يتضمن حمولة البيانات جميع مستهلكي البيانات الذين يحتاجون إلى معالجة الحدث دون مزيد من الاستفسارات (نقل الدولة المرخصة بالأحداث) واستخدام سجل شيما لتخزين الكيماويات وإنفاذها، واختيار استمارة تسلسلية: إن شركة JSON قابلة للقراءة البشرية، في حين أن شركة أفرو أو بروتوف تقدمان أفضل دعماً لتطور الكيماويات.

Schema Evolution

الأحداث هي عقود، وستتغير، خطة للتطور من البداية:

  • إدراج معلومات عن النسخ في كل مناسبة.
  • متابعة التوافق: يجب على المنتجين الجدد أن يعملوا مع المستهلكين القدامى.
  • استخدام الحقول الاختيارية للإضافات؛ وعدم إزالة الحقول أو إعادة تسميتها.
  • استخدام سجل شيما يُنفّذ قواعد التوافق أثناء النشر.
  • دعم نسخ متعددة من المواد الكيميائية خلال الفترات الانتقالية.

أفضل ممارسات التنفيذ

الحياد

ويجب على المستهلكين أن يتعاملوا مع تكرار الأحداث بأمان، وتشمل الاستراتيجيات ما يلي:

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

معالجة الأخطاء والقص

:: أخطاء مغايرة (التوقيتات المتعلقة بالشبكات، وعدم توافر الخدمة المؤقتة) من الأخطاء الدائمة (البيانات غير المستقرة، وعدم المطابقة الكيميائية) - استخدام التراجع المكثف مع المربعات للكشف عن المؤخرات، وإرسال الحدث إلى قائمة مسدودة للتفتيش اليدوي، ورصد التساؤلات المميتة، ووضع الإنذارات.

الحدث الذي يأمر به

فالنظام العالمي مكلف وغير ضروري في كثير من الأحيان، إذ يستخدم مفاتيح التجزؤ (مثل هوية العملاء، وأمر الهوية) لتوجيه الأحداث ذات الصلة إلى نفس التجزؤ، وضمان النظام في هذا السياق، ولا يُنفذ إلا الأمر الصارم الذي يتوقف عليه منطق الأعمال التجارية، لأنه يحد من إمكانية التصعيد.

الرصد والقابلية للاحتجاز

مقاييس رئيسية: معدل نشر الأحداث، وطول الاستهلاك، والوقت اللازم لتجهيزها، ومعدل الخطأ، وعمق التساؤل المميت، واستخدام التتبع الموزع مع بطاقات الهوية المترابطة لمتابعة الأحداث عبر الخدمات، ووضع تنبيهات بشأن الهالات مثل الانخفاض المفاجئ في حجم الاستهلاك أو زيادة رقعة المستهلك.

الأمن

وقد تتضمن الأحداث بيانات حساسة - تنفيذ التوثيق والترخيص للنشر والاشتراك - تنظيم أحداث مشفرة في العبور وفي الراحة - استخدام تقسيم الشبكة لعزل السمسار - إتاحة الوصول إلى مسارات الأحداث وتنفيذ سياسات الاحتفاظ بالبيانات حسب متطلبات الامتثال - النظر في تشفير الميادين الحساسة في حمولات المناسبات.

التحديات المشتركة والحلول

مداهمة التدفقات الموزعة

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

Event Storms

وتحدث عاصفة أحداث عندما تؤدي الأحداث إلى أحداث تهوية، مما قد يؤدي إلى إحداث حلقات لا نهائية أو إلى هيمنة النظام.

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

اختبار النظم المتزامنة

وتتطلب نظم الاختبار القائمة على الأحداث اتباع نهج مختلفة:

  • Unit tests: Mock the broker, verify that services publish/consume events correctly.
  • Integration tests]: Use test containers (e.g., Testcontainers for Kafka or RabbitMQ) to verify actual event flow.
  • Contract tests]: Ensure producers and consumers agree on schemas.
  • Chaos engineering]: Test resilience by simulating broker outages, network partitions, and consumer failures.

بدء مع تنظيم المسابقات

1 - تحديد أحداثك

ابدأوا بسلسلة صغيرة محددة من دون المستوى و "أورد بلايد" و "المستقبل" و"المستقبل" و"توثيق كل حدث: الغرض، الحمولة، المنتج، والمستهلكين

2 - اختر سمسارك

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

3 - حفل التصميم

إنشاء مجالات قياسية للبيانات الوصفية - تصميم حمولات باستخدام نقل الدولة المحملة بالأحداث - اختيار نموذج للتسلسل (JSON) للبساطة، Avro/Protobuf للإنتاج) - إنشاء سجل للكيماويات إن أمكن، ووضع اتفاقيات للتسمية وسياسات التطور.

4- التنفيذ والاختبار

بدء العمل بمنتج واحد ومستهلك واحد أو اثنين من المستهلكين - تنفيذ الايدمان، ومناولة الأخطاء، والرصد من اليوم الأول - استخدام المكتبات العميلة للسماسرة، وكتابة اختبارات التكامل مع حاويات الاختبار، ووضع لوحات لرقائق الاستهلاك ومعدلات الخطأ.

5- الإرسال والوثائق

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

حالات الاستخدام الحقيقي في العالم

تجهيز نظام التجارة الإلكترونية

عندما يضع الزبائن أمراً، فإن حدث "أورد باد" يُفضي إلى خدمات مستقلة متعددة: حجز المخزون، وتجهيز المدفوعات، وتحديد مواعيد الشحن، والإخطار، وإذا فشل الدفع، فإن الحدث التعويضي يُطلق المخزون، وكل جدول خدمة يستند بشكل مستقل إلى حمولة خاصة به، ويوفر سجل الحدث تاريخاً كاملاً لطلب دعم العملاء والمحللين.

التحليلات في الوقت الحقيقي وكشف الغش

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

IoT Sensor Data Ingestion

وينشر ملايين أجهزة الإيوت في هذه الأجهزة أحداثاً تتعلق بالتقدير عن بعد (الدرجة الزمنية، الرطوبة، الموقع) إلى وسيط للرسالة، ويتعامل المستهلكون المتعددون مع مهام مختلفة: تخزين البيانات (قاعدة بيانات السلاسل الزمنية)، والكشف عن الشذوذ (العمل)، وتحديث لوحات الشاشة، والاختبارات النموذجية للتعلم الآلي، ويتعامل التجزؤ مع المخرجات الضخمة، ويمكن توسيع نطاق المستهلكين الأفقي للحفاظ على حجم البيانات.

خاتمة

For[F Driven Architecture is a powerful paradigm for building modern microservices that arecalable, resilient, and maintainable. By embracing asynchronous communication, loose coupling, and event immutability, you can avoid the holefalls of coincidehronous distributed systems. The key is to start small, choose the right technology based on your requirements, and invest in idempotency