إضافة أقسام ديناميكياً إلى مركز أحداث (موضوع Apache Kafka)

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

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

هام

تتوفر الإضافات الديناميكية للأقسام فقط في المستويات المتميزةوالمخصصة لمراكز الأحداث.

إشعار

بالنسبة لعملاء Apache Kafka، يتم تعيين مركز الحدث على موضوع كافكا. لمزيد من التعيينات بين مراكز أحداث Azure و Apache Kafka، راجع رسم الخرائط المفاهيمية لكافكا ولمراكز الأحداث

حدّث عدد الأقسام

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

PowerShell

استخدم الأمر Set-AzEventHub PowerShell لتحديث الأقسام في مركز الأحداث.

Set-AzEventHub -ResourceGroupName MyResourceGroupName -Namespace MyNamespaceName -Name MyEventHubName -partitionCount 12

CLI

استخدم az eventhubs eventhub update الأمر CLI لتحديث الأقسام في مركز الحدث.

az eventhubs eventhub update --resource-group MyResourceGroupName --namespace-name MyNamespaceName --name MyEventHubName --partition-count 12

قالب إدارة الموارد

حدّث قيمة partitionCount الخاصية في قالب إدارة الموارد وأعد نشر القالب لتحديث المورد.

    {
        "apiVersion": "2017-04-01",
        "type": "Microsoft.EventHub/namespaces/eventhubs",
        "name": "[concat(parameters('namespaceName'), '/', parameters('eventHubName'))]",
        "location": "[parameters('location')]",
        "dependsOn": [
            "[resourceId('Microsoft.EventHub/namespaces', parameters('namespaceName'))]"
        ],
        "properties": {
            "messageRetentionInDays": 7,
            "partitionCount": 12
        }
    }

Apache Kafka

استخدم AlterTopics واجهة برمجة التطبيقات (على سبيل المثال، عبر أداة CLI Kafka-topic) لزيادة عدد الأقسام. لمزيد من التفاصيل، راجع تعديل موضوعات كافكا.

عملاء مراكز الأحداث

لنلق نظرة على كيفية تصرف عملاء "مراكز الأحداث" عند تحديث عدد الأقسام على مركز الحدث.

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

عملاء المرسل/المنتج

توفر مراكز الأحداث ثلاثة خيارات للمرسل:

  • مرسل القسم - في هذا السيناريو، يرسل العملاء الأحداث مباشرة إلى القسم. على الرغم من إمكانية تحديد الأقسام وإمكانية إرسال الأحداث إليها مباشرةً، إلا أننا لا نوصي بهذا النمط. لا تؤثر إضافة أقسام على هذا السيناريو. نوصي بإعادة تشغيل التطبيقات بحيث يمكنها الكشف عن الأقسام المضافة حديثًا.
  • مرسل مفتاح القسم – في هذا السيناريو، يرسل العملاء الأحداث باستخدام مفتاح بحيث ينتهي الأمر بكافة الأحداث التي تنتمي إلى هذا المفتاح في نفس القسم. في هذه الحالة، تجزئ الخدمة المفتاح والمسارات إلى القسم المقابل. يمكن أن يسبب تحديث عدد الأقسام مشكلات خارج الترتيب بسبب تغيير التجزئة. لذلك، إذا كنت تهتم بالترتيب، فتأكد من أن تطبيقك يستهلك كافة الأحداث من الأقسام الموجودة قبل زيادة عدد الأقسام.
  • المرسل round-robin (افتراضي) – في هذا السيناريو، تعمل خدمة "مراكز الأحداث" على إيقاف الأحداث عبر الأقسام، وتستخدم أيضًا خوارزمية موازنة التحميل. تدرك خدمة مراكز الأحداث التغييرات في عدد الأقسام وسوف ترسل إلى أقسام جديدة في غضون ثوانٍ من تغيير عدد الأقسام.

العملاء المتلقي / المستهلك

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

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

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

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

    في 30 سبتمبر 2026، سنتقاعد مكتبات SDK ناقل خدمة Azure WindowsAzure.ServiceBus وMicrosoft.Azure.ServiceBus و com.microsoft.azure.servicebus، والتي لا تتوافق مع إرشادات Azure SDK. سننهي أيضا دعم بروتوكول SBMP، لذلك لن تتمكن من استخدام هذا البروتوكول بعد 30 سبتمبر 2026. قم بالترحيل إلى أحدث مكتبات Azure SDK، والتي توفر تحديثات أمان هامة وقدرات محسنة، قبل ذلك التاريخ.

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

عملاء أباتشي كافكا

يصف هذا القسم كيف يتصرف عملاء Apache Kafka الذين يستخدمون نقطة نهاية Kafka لمراكز الأحداث Azure عند تحديث عدد الأقسام لمركز الحدث.

يتصرف عملاء Kafka الذين يستخدمون "مراكز الأحداث" مع بروتوكول Kafka Apache بشكل مختلف عن عملاء مركز الحدث الذين يستخدمون بروتوكول AMQP. يقوم عملاء Kafka بتحديث بياناتهم الوصفية مرة كل metadata.max.age.ms مللي ثانية. أنت تحدد هذه القيمة في تكوينات العميل. تستخدمlibrdkafkaالمكتبات أيضًا نفس التكوين. تقوم تحديثات بيانات التعريف بإبلاغ العملاء بتغييرات الخدمة بما في ذلك زيادة عدد الأقسام. للحصول على قائمة التكوينات، راجع تكوينات Apache Kafka لمراكز الأحداث.

عملاء المرسل/المنتج

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

عملاء المستهلك/المتلقي

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

التوصيات

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

    هام

    بينما تحتفظ البيانات الموجودة بالترتيب، سيتم تقسيم تجزئة القسم للرسائل المجزأة بعد تغيير عدد الأقسام بسبب إضافة أقسام.

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

    • عند استخدام الطريقة الافتراضية لإرسال الأحداث
    • استراتيجيات كافكا الافتراضية، على سبيل المثال – استراتيجية المُحدد اللاصق

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

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