Table of Contents
التعريف بالتظاهرات والتجمعات
وقد أصبحت أنشطة التقارب والقيادة في الفصل المتعلق بمسؤولية الكبريت أنماطاً أساسية لبناء نظم حديثة وموزعة، وعندما تقترن هذه الأنماط بالهيكلات التي لا تصلح للخواديم، فإنها تُطلق مناً لم يسبق لها مثيل من القابلية للتصعيد والقدرة على التكيف والقدرة على مراجعة الحسابات، وتوفر هذه المادة استكشافاً شاملاً لمصادر الأحداث المنفذة، كما توفر خدمات الرقابة في البيئات التي لا تعرف عنها، وتشمل المفاهيم الأساسية، واستراتيجيات التنفيذ العملية، والعقبات المشتركة، وأفضل الممارسات في العالم الحقيقي.
الحدث: تخزين التغيير كحصة من الأحداث
إن الحدث هو نمط ثابت للبيانات حيث يتم تسجيل كل تغيير في دولة الطلب كحدث غير قابل للتداول، بدلا من تخزين الدولة الحالية فقط، يسجل النظام سجلا زمنيا للأحداث، ويمكن إعادة بناء الدولة الحالية بإعادة تمثيل تلك الأحداث، وهذا النهج يوفر مسارا كاملا لمراجعة الحسابات، ويمكِّن من الاستفسارات الزمنية (مثلا، ما كان امتثال الدولة في تاريخ معين)
In a serverless context, the event store must be highly durable, scalable, and low-latency. Common choices include AWS DynamoDB, Azure Cosmos DB, or
ولا تزال المادة التي يُستخدم فيها مارتن فاولر () من مادة " الحدث السوسي " () مرجعاً نهائياً لفهم المعاني من النمط.
الهيكل والشيما
وينبغي أن يتضمن كل حدث على الأقل: نوع من الأحداث، ومؤخرة، ومحدد إجمالي، ورقم نسخة، وحمولة مع البيانات التي تغيرت، باستخدام سجل شيما (مثلاً، ] سجل غوغل كلود Schema أو سجل المساعدة في مجال رصد التوافق [FwardLT:2]
CQRS: Separating Reads from Writes
ويفصل نظام CQRS (CQmand Query Responsibility Segregation) النماذج المستخدمة في التعامل مع الأوامر (الكتابات) عن النماذج المستخدمة في معالجة الاستفسارات (الخطابات) ويعني ذلك في هيكل لا يصلح للخواديم نشر مهام أو خدمات منفصلة: عملية معالجي القيادة تكتب، وكثيرا ما تذيع الأحداث في متجر الأحداث، بينما يقرأ معالجو الاستفسارات من نماذج مصورة أو جداول مستنسخة حسب المقاييس، والآراء المصورة.
ويحقق هذا الفصل فوائد كبيرة: تظل أعباء العمل مكتوبة، وتركز على المصادقة واستمرار الأحداث، بينما يمكن تخصيص نماذج للاسترداد السريع، بما في ذلك ما قبل الانضمام، والتجميع، وقدرات البحث الكاملة، ويتواصل الجانبان عبر آليات متزامنة مثل ]event streams.
ويوفر وثيقة غريغ يونغ الأصلية CQRS سياقاً أساسياً للنمط.
الجمع بين الحدثين في السورجينغ وشركة CQRS في منطقة لا حول لها
وعندما تستخدم هذه الوحدات معا، تشكل عملية التعبئة والتجمعات من أجل إعادة التأهيل أداة قوية: فالقيادات تنتج أحداثا مخزنة في سجل الأحداث، والتوقعات (أو المشتركون) تستكمل بشكل متزامن نماذج القراءة، وتخرج من هذه البرامج التي لا تصلح في النموذج القائم على الأحداث لأنها تُعد إدارة الهياكل الأساسية وتُقَيِّم كل عنصر على أساس الحمل.
وفيما يلي تدفق نموذجي لا يتوفر فيه أي نشاط من مصادر الأحداث:
- User action] triggers a command function (e.g., an AWS Lambda behind API Gateway).
- وتتحقق وظيفة القيادة من صحة المدخلات، وتنتج حدثا أو أكثر من الأحداث الميدانية، وتذييلها إلى متجر الأحداث (DynamoDB، Cosmos DB، وما إلى ذلك).
- وبعد تذييل الأحداث، تنشر هذه الوظيفة رسالة (مثلا إلى الأمازون إيفنت بريدج، أو أزور تظاهرة، أو غوغل بوب/Sub) تشير إلى أن هناك أحداثا جديدة متاحة.
- Projection functions] subscribe to the event stream and update the read model (e.g., a denormalized DynamoDB table, an Elasticsearch index, or a cache like Redis).
- وتُقرأ وظائف الحجر الصحي مباشرة من النموذج القراء، ولا تستفسر أبداً عن متجر الأحداث.
ويكفل هذا التصميم ] الاتساق الافتراضي ] بين الجانبين الكتابي والقراء، وهو مبادلات أساسية بين نظام الإبلاغ الموحد.() وفي العديد من مجالات الأعمال، يكون الاتساق في نهاية المطاف مقبولاً بل مستصوباً لأنه يسمح بزيادة النتاج وانخفاض درجة الرضا.
مثال: إدارة نظام التجارة الإلكترونية
(ب) النظر في نظام الطلب: يضع المستخدم أمراً (ملزم)، يصدر فيه حدث ، وتقرأ مهمة الإسقاط هذه المناسبة وتستكمل نموذجاً لموجز الطلب يُستعاض عنه باسم المنتج وكميته وحالته الحالية، ويمكن أن يستكمل إسقاط آخر نموذجاً لقراءة المخزون، وإذا طلب المستخدم لاحقاً إصدار الطلب، فإن وظيفة الاستفسارات تُقرأ من النموذج الموجز السابق للبناء، وتتجنب الإنضمام أو القراءة الباه.
تنفيذ مسروق الأحداث في قواعد البيانات التي لا تُعرف
(د) اتباع نهج مشترك مع شركة دينامو دي بي يتمثل في استخدام جدول واحد مع مفتاح أساسي مركب: ] (مفتاح إدارة) و (مفتاح ضوئي) يتيح استرجاع جميع الأحداث بسرعة في شكل مجموعة محددة، ويضمن تخزين مسار الحدث بأكمله عمليات ذات كفاءة واحدة.
أما بالنسبة لحجم العمل الذي يتطلب استفسارات شاملة، فينظر في استخدام مؤشر ثانوي عن نوع أو أوقات الأحداث، غير أنه يتجنب مسح كامل متجر الأحداث؛ ويخدم هذه الاحتياجات على نحو أفضل نماذج مكرسة للقراءة.
On Azure, Cosmos DB offers similar capabilities with configurable consistency levels and automatic indexing. Azure Architecture Architecture Center's Event Sourcing pattern provides guidance specific to that platform.
التجانس والاحتياج
ويجب التعامل بعناية مع الكتابات المتطابقة إلى نفس المجموع، وباستخدام ] التحكم في المواظبة على التناغم ] (مثلا، فإن التحديث المشروط مع فحص النسخ في دينامو دي بي) يكفل أن تكون القيادة الوحيدة التي تنجح في كل صيغة إضافية، وفي حالة النزاع، يمكن إعادة ترتيب القيادة بعد إعادة قراءة آخر الأحداث التي تم ضمانها.
نماذج قراءة المباني مع الإسقاطات
والتوقعات هي وظائف تستهلك الأحداث وتستكمل نموذجاً أو أكثر من النماذج القراء، ومن الأفضل أن تنفذ هذه المشاريع على أنها ] مهام مدفوعة بالأحداث ] تنشأ عن حافلة الأحداث، وينبغي أن تكون كل وظيفة الإسقاطات ذات جدوى: إذا تم تجهيز الحدث أكثر من مرة (مثلاً بسبب تراجع)، فإن تحديث النموذج القراء يجب أن يسفر عن النتيجة نفسها.
وتشمل الاستراتيجيات المشتركة لبناء النماذج ما يلي:
- Denormalized tables] in DynamoDB or Cosmos DB that mirror the query patterns (e.g., all orders for a user).
- Search indexes] in Elsyarch, Amazon OpenSearch, or Azure search for full —text and faceted queries.
- Materialized views] using streaming frameworks like AWS Kinesis Data Analytics or Azure Stream Analytics.
- In‐memory caches (e.g., ElastiCache, Redis) for ultra -low latency queries, with TTL — invalidation.
وتجنباً للقوارب الضيقة، ينبغي أن تكون التوقعات عديمة الجنسية وأن تكون مدفوعة فقط بعبء الحدث، ويمكن إضافتها أو إزالتها أو تعديلها دون المساس بالجانب القيادي.
معالجة التظاهرات الطارئة
ومن أكبر التحديات في نظام إدارة السجلات والمحفوظات/النظام الإداري الموحد للحساب الإلكتروني إدارة الاتساق وتنسيق المعاملات التجارية المتعددة الخطوات في نهاية المطاف، ويمكن للمستعمل أن يضع أمرا، ولكن النموذج القراء قد لا يعكس هذا التغيير بالنسبة لحوالي مئات من الثلثات، وبالنسبة لتوقعات المستعملين المتزامنة (مثلا، عرض صفحة تأكيد)، يمكن لمدير القيادة أن يعيد الهوية فورا في حين تُعدّل بطاقات الاقتراع الأمامية لتحديث النموذج أو يُشترك في قناة على شبكة ويب.
وبالنسبة للعمليات المتعددة الخطوات التي تتطلب معاملات موزعة، فإن نمط SAGA ] هو الحل المفضل، وكل خطوة في الأحداث التي تُحدث في إطار سلسلة " saga emits " ، والأحداث التعويضية تُخزن في مخزن الأحداث لتُبطل جزئياً، والوظائف التي لا تُستخدم، والمشغلات الدائمة (مثلاً، عمليات الإنقاذ الطويلة الأجل، والمهام التي يمكن تشغيلها في غوغل،)
معالجة الأخطاء و إحتمالية في سكال
وتخضع البيئات التي لا توصف للفشل الظاهري والاستفزازات المزدوجة، ويجب تصميم معالجي الأحداث على أساس الإيجاب، وخزن نافذة للتحلل ] (مثلاً، باستخدام DynamoDB TTL أو مجموعة ريديس) تسجل أحداثاً مجهزة، إذا وصل الحدث مرة أخرى في إطار النافذة، صامتة.
وعندما تفشل القيادة بعد أن تُوجه الأحداث إلى المتجر، فقد تم بالفعل كتابتها، وفي هذه الحالات، قد تحتاج إلى تنفيذ حدث تعويضي ] (مثلاً، )) لإعادة الدولة، ويُخزَّن الحدث التعويضي تماماً كحدث عادي ويُفضي إلى عرض يُبطل العمل.
Also, consider dead‐letter queues (DLQs) for events that repeatedly fail processing. DLQs allow you to inspect and replay events after fixing the issue, without lose data.
الأداء والتكلفة الأمثل في نظم الأحداث التي لا تُقدر بثمن
وفي حين أن استخدام مصادر المناسبات المصممة بطريقة غير مأمونة يمكن أن يتكبد تكاليف مرتفعة، تشمل مجالات الاستخدام الأمثل الرئيسية ما يلي:
- Batch processing:] When projecting events, read and write in batches to minimize database requests. DynamoDB’s can handle up to 25 items at once.
- Snapshots:] Periodically storeshots of aggregate states to avoid replaying the entire event log on every read. Snapshots are stored in the same event store table with a special version (e.g., version number preceded by “SNAP”). The replay logical then starts from the latest snapshot, drastically reducing read time.
- Caching:] Cache frequently accessed read model data at the application level (e.g., using ElastiCache or CloudFront with dynamic content).
- Event partitioning:] If using a pub/sub system like EventBridge, partition events by aggregate type to control the rate of invocation for projection functions.
مثال: استراتيجية الناموسيات في دينامو دي بي
تخزين صورة مع مفتاح التقسيم = مفتاح التجميع والنوع = " SNAP#
اختبار وتداول نظم الخدمة المرفوعة
وتتطلب البنيانات القائمة على الاختبارات استراتيجيات مختلفة عن النظم التقليدية للوحدة، ويمكن للاختبارات التي تجريها الوحدة التحقق من أن متعهدي القيادة ينتجون الأحداث الصحيحة التي قدمت مدخلات، وينبغي أن تثبت اختبارات التكامل أن التوقعات تستكمل بشكل صحيح نماذج القراءة عند نشر الأحداث، ولأن الوظائف التي لا تخدم أي خدمة عديمة الجنسية، وأن تنظر في استخدام الموصلات المحلية (مثلاً مكتبة الاختبار المحلية التابعة للرابطة، ومكتبة الاختبار المحلية لامتحانات المحلية لخطابات).
ويمكنك إعادة تنظيم الأحداث في بيئة إنمائية لإعادة تحديد التسلسل الدقيق الذي أدى إلى وجود حشرة، كما أن أدوات مثل AWS X-Ray ] أو ] Azure Monitor تساعد على تتبع الاستفزازات عبر الخدمات.
الشلالات المشتركة وكيفية تجنبها
- Inappropriate domain modeling:] Not every business domain benefits from event sourcing. If you need simple CRUD with no audit requirements, the overhead may not be justified.
- Overly large events:] Storing large payloads (e.g., entire documents) as a single event reduces performance. Decompose events into meaningful, granular changes.
- Projection drift:] When read models become out of coincide due to missed events or fines, you need a replay mechanism. Build a replay function that can reprocess all events from a given point in time.
- Ignoring schema evolution:] Events are immutable, but their schemas change. Use a registry and version each event type. Design new projections to handle multiple versions.
- Cold starts affecting projections:] Projection functions that are invoked infrequently may suffer from cold start latency. Consider using provisioned concurrency for critical projections or batching events into fewer invocations.
معرض الهندسة المعمارية في العالم الحقيقي
وقد تم تطبيق تطبيق تجاري مالي مبني على نظام " إي دبدا " ، و " دينامو دي بي " ، و " إيفينبريدج " ، و " استبانة " ، و " نظام " للبيع " ، و " نظام " لامبو " ، و " مُعدّل ثانٍ " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " مُعدّة " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و " ، و &
وتجنب ذلك الفريق حدوث شقلبات مشتركة من خلال إنفاذ إصدار كيميائي صارم للحدث (استخدام أباتشي أفرو) وتنفيذ خط إعادة تشغيل مخصص يمكن أن يعيد بناء جميع النماذج القراء من الصفر في أقل من 30 دقيقة.
خاتمة
وتنفيذ عملية الحرق والتجمعات في الهياكل غير المجهزة للحواسيب، يتيح للأفرقة الإنمائية القدرة على بناء نظم قابلة للقياس ومراجعة الحسابات وقابلة للاستمرار، وذلك عن طريق الاستفادة من خدمات إدارة كاملة لتخزين الأحداث، وتوجيه الرسائل، والحساب، ويمكن أن تركز على منطق الأعمال التجارية، بينما يعالج المنبر الشواغل المتعلقة بالهياكل الأساسية، وتشمل عوامل النجاح الرئيسية نماذج الأحداث المتأنية، والإسقاطات الافتراضية، والتفكير في استخدام أدوات تحديد المواقع، والتعامل مع الأخطاء القوية.