اختر Azure Event Grid

مكتمل

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

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

ما هي Azure Event Grid؟

Azure Event Grid هي خدمة توجيه أحداث مدارة بالكامل تعمل فوق Azure Service Fabric. توزع Event Grid الأحداث من مصادر مختلفة، مثل حسابات تخزين Azure Blob أو Azure Media Services، إلى معالجات مختلفة، مثل Azure Functions أو Webhooks. تم إنشاء Event Grid لتسهيل إنشاء تطبيقات تستند إلى الحدث وبلا خادم على Azure.

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

هناك العديد من المفاهيم في Azure Event Grid التي تصل مصدر إلى مشترك:

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

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

Diagram of various event sources sending messages as topics to the Event Grid which in turn sends messages to subscribing event handlers.

ما هو الحدث؟

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

[
  {
    "topic": string,
    "subject": string,
    "id": string,
    "eventType": string,
    "eventTime": string,
    "data":{
      object-unique-to-each-publisher
    },
    "dataVersion": string,
    "metadataVersion": string
  }
]
الحقل ‏‏الوصف
الموضوع مسار المورد الكامل إلى مصدر الحدث. توفر شبكة الأحداث هذه القيمة.
الموضوع مسار يحدده الناشر لموضوع الحدث.
معرف المعرف الفريد للحدث.
نوع الحدث أحد أنواع الأحداث المسجلة لمصدر الحدث الماثل. يمكنك إنشاء عوامل تصفية مقابل هذه القيمة، على سبيل المثال، CustomerCreated، BlobDeleted، HttpRequestReceived، وما إلى ذلك.
وقت الحدث وقت إنشاء الحدث استنادًا إلى التوقيت العالمي للموفر.
البيانات معلومات محددة ذات صلة بنوع الحدث. على سبيل المثال: يحتوي حدث حول ملف جديد يتم إنشاؤه في Azure Storage على تفاصيل حول الملف، مثل lastTimeModified القيمة. أو حدث «مراكز الأحداث» يحتوي على عنوان URL لملف التسجيل. هذا الحقل اختياري.
إصدار البيانات إصدار مخطط كائن البيانات. يعرّف الناشر إصدار المخطط.
إصدار بيانات التعريف إصدار مخطط بيانات تعريف الحدث. تحدد «شبكة الأحداث» مخطط خصائص المستوى الأعلى. توفر شبكة الأحداث هذه القيمة.

تلميح

وترسل «شبكة الأحداث» حدثًا للإشارة إلى حدث ما أو تغيير. ومع ذلك، الكائن الفعلي الذي تم تغييره ليس جزءا من بيانات الحدث. وبدلاً من ذلك، يتم تمرير عنوان URL أو مُعرف للإشارة إلى العنصر الذي تم تغييره.

ما هو مصدر الحدث؟

مصادر الحدث مسؤولة عن إرسال الأحداث إلى «شبكة الأحداث». يرتبط كل مصدر حدث بنوع أو أكثر من أنواع الأحداث. على سبيل المثال، Azure Storage هي مصدر الحدث للأحداث الكبيرة التي تم إنشاؤها. IoT Hub هو مصدر الحدث للأحداث التي تم إنشاؤها من قبل الجهاز. التطبيق الخاص بك هو مصدر الحدث للأحداث المخصصة التي تقوم بتعريفها. سننظر إلى مصادر الأحداث بمزيد من التفصيل بعد قليل.

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

ما هو موضوع الحدث؟

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

يتم تقسيم الموضوعات إلى مواضيع النظام والموضوعات المخصصة .

مواضيع النظام

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

الموضوعات المخصصة

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

ما هو اشتراك الحدث؟

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

ما هو معالج الأحداث؟

معالج الأحداث (ويشار إليه أحيانًا باسم «مشترك» الحدث) هو أي مكون (تطبيق أو مورد) التي يمكن أن يتلقى الأحداث من «شبكة الأحداث». على سبيل المثال، يمكن لـ Azure Functions تنفيذ التعليمات البرمجية استجابة للأغنية الجديدة التي تتم إضافتها إلى حساب التخزين Blob. يمكن للمشتركين تحديد الأحداث التي يريدون التعامل معها وستقوم Event Grid بإعلام كل مشترك مهتم بكفاءة عند توفر حدث جديد؛ لا يلزم إجراء أي استقصاء.

أنواع مصادر الحدث

يمكن أن تنشئ أنواع موارد Azure التالية أحداثا:

خدمات Azure التي تدعم مواضيع النظام

فيما يلي بعض خدمات Azure التي تدعم موضوعات النظام. للحصول على القائمة الكاملة لخدمات Azure التي تدعم موضوعات النظام، راجع موضوعات النظام في Azure Event Grid.

  • اشتراكات Azure ومجموعات الموارد: تنشئ الاشتراكات ومجموعات الموارد أحداثا تتعلق بعمليات الإدارة في Azure. على سبيل المثال، عندما يقوم مستخدم بإنشاء جهاز ظاهري، يقوم هذا المصدر بإنشاء حدث.
  • سجل الحاوية: تنشئ خدمة Azure Container Registry أحداثا عند إضافة الصور في السجل أو إزالتها أو تغييرها.
  • مراكز الأحداث: يمكن استخدام مراكز الأحداث لمعالجة الأحداث وتخزينها من مصادر بيانات مختلفة، عادة ما تكون مرتبطة بتسجيل الدخول أو بيانات تتبع الاستخدام. يمكن لمراكز الأحداث إنشاء أحداث إلى شبكة الأحداث عند تسجيل الملفات.
  • ناقل خدمة Microsoft Azure: يمكن لناقل خدمة Microsoft Azure إنشاء أحداث إلى Event Grid عندما تكون هناك رسائل نشطة بدون وحدات استماع نشطة.
  • حسابات التخزين: يمكن لحسابات التخزين إنشاء أحداث عندما يضيف المستخدمون الكائنات الثنائية كبيرة الحجم أو الملفات أو إدخالات الجدول أو رسائل قائمة الانتظار. يمكنك استخدام كل من الحسابات الثنائية كبيرة الحجم وحسابات ذات الأغراض العامة من الإصدار الثاني كمصادر للأحداث.
  • خدمات الوسائط: تستضيف Media Services وسائط الفيديو والصوت وتوفر ميزات إدارة متقدمة لملفات الوسائط. يمكن أن تقوم «خدمات الوسائط» بإنشاء أحداث عند بدء مهمة ترميز أو إكمالها على ملف فيديو.
  • Azure IoT Hub: يتصل IoT Hub مع أجهزة IoT ويجمع بيانات تتبع الاستخدام منها. ويمكن أن تولد الأحداث كلما وصلت هذه الاتصالات.

لمزيد من المعلومات، راجع موضوعات النظام في Azure Event Grid.

الموضوعات المخصصة

يمكنك إنشاء أحداث مخصصة باستخدام واجهة برمجة تطبيقات REST، أو باستخدام Azure SDK على Java وGO و.NET والعقدة وPython وRupi. على سبيل المثال، يمكنك إنشاء حدث مخصص في ميزة Web Apps لـ Azure App Service. ويمكن أن يحدث هذا في دور العامل عندما يلتقط رسالة من قائمة انتظار مخزن.

هذا التكامل العميق مع مصادر الأحداث المتنوعة داخل Azure يضمن أن «شبكة الأحداث» يمكنها توزيع الأحداث التي تتعلق تقريبًا بأي مورد في Azure.

معالجات الأحداث

يمكن لأنواع العناصر التالية في Azure استقبال ومعالجة الأحداث من «شبكة الأحداث»:

  • Azure Functions: التعليمات البرمجية المخصصة التي تعمل في Azure، دون الحاجة إلى تكوين صريح لخادم أو حاوية ظاهرية مضيفة. وتستخدم وظيفة Azure كمعالج حدث عندما تريد أن تبرمج استجابة مخصصة للحدث.
  • Azure Logic Apps: استخدم Logic Apps لتنفيذ العمليات التجارية لمعالجة أحداث شبكة الأحداث. لا تقم بإنشاء خطاف ويب بشكل صريح في هذا السيناريو. يتم إنشاء خطاب الويب لك تلقائياً عند تكوين التطبيق المنطقي لمعالجة الأحداث من Event Grid.
  • خطافات الويب: خطاف الويب هو واجهة برمجة تطبيقات الويب التي تنفذ بنية الدفع. يمكنك أيضًا معالجة الأحداث باستخدام دفاتر تشغيل أتمتة Azure. تدعم خطافات الويب معالجة الأحداث باستخدام دفاتر التشغيل التلقائية. أنشئ خطاف ويب لدفتر التشغيل ثم استخدم معالج خطاف الويب.
  • مراكز الأحداث: استخدم مراكز الأحداث عندما يحصل الحل خاصتك من شبكة الأحداث بشكلٍ أسرع مما يمكنه معالجة الأحداث. بمجرد أن تكون الأحداث في مركز الأحداث، يمكن للتطبيق الخاص بك معالجة الأحداث من مركز الحدث وفقاً لجدول زمني خاص به.
  • ناقل الخدمة: يمكنك استخدام قائمة انتظار الخدمة أو الموضوع كمعالج للأحداث من شبكة الأحداث.
  • قوائم انتظار التخزين: استخدم موقع تخزين قائمة الانتظار لتلقي الأحداث التي يجب سحبها. يمكنك استخدام تخزين قائمة الانتظار عندما تكون لديك عملية تشغيل طويلة تستغرق وقتاً طويلاً للاستجابة. من خلال إرسال الأحداث إلى تخزين قائمة الانتظار، يمكن للتطبيق سحب الأحداث ومعالجتها وفقاً لجدولها الزمني الخاص.
  • Microsoft Power Automate: يستضيف Power Automate أيضا مهام سير العمل، ولكن من الأسهل على الموظفين غير التقنيين استخدامها.

لمزيد من المعلومات، راجع معالج الأحداث.

هل يجب عليك استخدام «شبكة الأحداث»؟

استخدم «شبكة الأحداث» عندما تحتاج إلى هذه الميزات:

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

«شبكة الأحداث» هي نظام توزيع أحداث بسيط ولكنه متعدد الاستخدامات. استخدمه لتقديم أحداث منفصلة للمشتركين، والتي ستستقبل تلك الأحداث بشكل موثوق به وسريع. لدينا نموذج مراسلة آخر لفحصه؛ ماذا لو أردنا تقديم تدفق كبير من الأحداث؟ في هذا السيناريو، لا تشكل «شبكة الأحداث» حلاً رائعًا لأنها مصممة لتسليم حدث واحد في وقت واحد. وبدلاً من ذلك، نحتاج إلى اللجوء إلى خدمة Azure أخرى: «مراكز الأحداث».