اتحاد متعدد المواقع ومتعدد المناطق

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

من الناحية العملية، هذا يعني أن الحل الخاص بك سيحافظ على العديد من مراكز الأحداث، غالباً في مناطق مختلفة ومساحات أسماء الأحداث، ثم تكرار الأحداث فيما بينها. يمكنك أيضا تبادل الأحداث مع المصادر والأهداف مثل ناقل خدمة Azure أو Azure IoT Hub أو Apache Kafka.

كما يتيح الاحتفاظ بمراكز أحداث نشطة متعددة في مناطق مختلفة للعملاء الاختيار والتبديل بينها إذا تم دمج محتوياتهم؛ ما يجعل النظام العامّ أكثر مرونةً في مواجهة مشكلات التوفر الإقليمية.

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

أنماط نظام الدخول الموحد

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

المرونة في مواجهة أحداث التوافر الإقليمي

التوفر الإقليمي

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

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

هناك نمطان أساسيان لمعالجة مثل هذه السيناريوهات:

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

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

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

الإرشاد:

تحسين وقت الاستجابة

تحسين وقت الاستجابة

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

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

الإرشاد:

المصادقة والتقليل والإثراء

المصادقة، التقليل، الإثراء

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

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

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

قد تحدث أي من هذه العمليات كجزء من تدفقات النسخ المتماثل، أو التوحيد، أو الدمج.

الإرشاد:

التكامل مع خدمات التحليلات

التكامل مع خدمات التحليلات

تعمل العديد من خدمات التحليلات الأصلية في Azure مثل Azure Stream Analytics أو Azure Synapse بشكل أفضل مع البيانات المتدفقة أو المجمعة مسبقاً والمقدمة من Azure Event Hubs، كما تتيح Azure Event Hubs التكامل مع العديد من حزم التحليلات مفتوحة المصدر مثل Apache Samza، وApache Flink، وApache Spark، وApache Storm.

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

يتكامل Azure Stream Analytics مع مراكز الأحداث مباشرة.

الإرشاد:

توحيد وتطبيع تيارات الأحداث

توحيد وتطبيع تيارات الأحداث

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

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

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

الإرشاد:

تقسيم وتوجيه تدفقات الحدث

تقسيم وتوجيه تدفقات الحدث

يتم استخدام Azure Event Hubs أحياناً في سيناريوهات نمط "النشر والاشتراك" حيث يتجاوز السيل الوارد للأحداث التي تم استيعابها قدرة Azure Service Bus أو Azure Event Grid، وكلاهما له إمكانات أصلية لتصفية الاشتراك والنشر ويُفضّلان لهذا النمط.

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

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

الإرشاد:

إسقاطات السجل

إسقاط السجل

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

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

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

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

الإرشاد:

تقنيات تطبيق النسخ المتماثل

يتطلب تنفيذ الأنماط المذكورة أعلاه بيئة تنفيذ قابلة للتطوير وموثوق بها لمهام النسخ المتماثل التي تريد تكوينها وتشغيلها. في Azure، بيئات وقت التشغيل الأنسب لمثل هذه المهام هي المهام عديمة الحالة هي Azure Stream Analytics لمهام النسخ المتماثل للبث ذات الحالة ووظائف Azure لمهام النسخ المتماثل عديمة الحالة.

تطبيقات النسخ المتماثل ذات الحالة في Azure Stream Analytics

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

في Azure Stream Analytics، يمكنك إنشاء وظائف تدمج المدخلات والمخرجات وتدمج البيانات من المدخلات من خلال الاستعلامات التي تسفر عن نتيجة يتم توفيرها بعد ذلك على المخرجات.

تستند الاستعلامات إلى لغة استعلام SQL ويمكن استخدامها لتصفية البيانات المتدفقة وفرزها وتجميعها والانضمام إليها بسهولة على مدى فترة زمنية. يمكنك أيضا توسيع لغة SQL هذه باستخدام وظائف JavaScript وC# المعرفة من قبل المستخدم (UDFs). يمكنك بسهولة ضبط خيارات ترتيب الحدث ومدة الإطارات الزمنية عند تنفيذ عمليات التجميع من خلال بنى اللغة البسيطة و/أو التكوينات.

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

  • إرسال البيانات إلى خدمات مثل Azure Functions أو مواضيع ناقل الخدمة أو قوائم الانتظار لتشغيل الاتصالات أو المراحل النهائية لمهام سير العمل المخصصة.
  • إرسال البيانات إلى لوحة معلومات Power BI للحصول على بيانات لوحة المعلومات في الوقت الفعلي.
  • قم بتخزين البيانات في خدمات تخزين Azure الأخرى (على سبيل المثال: Azure Data Lake، وAzure Synapse Analytics، وما إلى ذلك) لإجراء تحليلات مجمعة أو تدريب نماذج التعلم الآلي بناءً على مجموعات كبيرة جداً ومفهرسة من البيانات التاريخية.
  • تخزين الإسقاطات (تسمى أيضا "طرق العرض المجسدة") في قواعد البيانات (قاعدة بيانات SQL، Azure Cosmos DB).

تطبيقات النسخ المتماثل عديمة الحالة في وظائف Azure

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

تحتوي Azure Functions على مشغلات قابلة للتطوير مسبقا وروابط إخراج لمراكز أحداث Azure وAzure IoT Hub ناقل خدمة Azure وAzure Event Grid وAzure Queue Storage، بالإضافة إلى ملحقات مخصصة ل RabbitMQ وApache Kafka. سوف تتكيف معظم المشغلات ديناميكياً مع احتياجات الإنتاجية عن طريق زيادة عدد المثيلات المنفذة المتزامنة إلى أعلى وإلى أسفل بناءً على المقاييس الموثقة.

لإنشاء إسقاطات السجل، تدعم Azure Functions روابط الإخراج ل Azure Cosmos DB وAzure Table Storage.

يمكن تشغيل Azure Functions ضمن هوية مدارة من Azure، ومع ذلك، يمكنها الاحتفاظ بقيم التكوين لبيانات الاعتماد في التخزين الذي يتحكم فيه الوصول بإحكام داخل Azure Key Vault.

علاوة على ذلك، تسمح Azure Functions لمهام النسخ المتماثل بالتكامل مباشرة مع شبكات Azure الظاهرية ونقاط نهاية الخدمة لجميع خدمات مراسلة Azure، ويتم دمجها بسهولة مع Azure Monitor.

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

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

الاختيار بين وظائف Azure وAzure Stream Analytics

Azure Stream Analytics (ASA) هو الخيار الأفضل متى احتجت إلى معالجة حمولة أحداثك أثناء تكرارها. يمكن لـ ASA نسخ الأحداث واحداً تلو الآخر، أو يمكنها إنشاء مجاميع تكثف معلومات تدفقات الأحداث قبل إعادة توجيهها. يمكن أن يعتمد بسهولة على استكمال البيانات المرجعية الموجودة في Azure Blob Storage أو قاعدة بيانات Azure SQL دون الحاجة إلى استيراد مثل هذه البيانات إلى دفق.

باستخدام ASA، يمكنك بسهولة إنشاء عروض ثابتة ومتجسدة للتدفقات في قواعد البيانات واسعة النطاق. إنها طريقة متفوقة للغاية لنموذج "ضغط اللوغاريتمات" الخطأ الخاص بـ Apache Kafka وإسقاطات مسارات Kafka المتقلبة من جانب العميل.

يمكن ل ASA بسهولة معالجة الأحداث التي تحتوي على حمولات مشفرة بتنسيقات CSV وJSON وApache Avro ويمكنك توصيل أجهزة إلغاء التسلسل المخصصة لأي تنسيق آخر.

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

الخطوات التالية

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

وبعد ذلك، قد ترغب في قراءة كيفية إعداد تطبيق النسخ المتماثل باستخدام Azure Stream Analytics أو Azure Functions، ثم كيفية تكرار تدفقات الأحداث بين Event Hubs وأنظمة الأحداث والمراسلة المختلفة الأخرى: