ما هي مراكز أحداث Azure ل Apache Kafka

توضح هذه المقالة كيف يمكنك استخدام Azure Event Hubs لدفق البيانات من تطبيقات Apache Kafka دون إعداد نظام مجموعة Kafka بنفسك.

إشعار

يتم دعم هذه الميزة فقط في المستويات القياسية والمتميزة والمخصصة.

نظرة عامة

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

إشعار

تدعم مراكز الأحداث ل Kafka Ecosystems الإصدار 1.0 من Apache Kafka والإصدارات الأحدث.

التعيين المفاهيمي ل Apache Kafka وAzure Event Hubs

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

مفهوم Kafka مفهوم مراكز الأحداث
نظام المجموعة مساحة الاسم
الموضوع محور حدث
القسم القسم
مجموعة المستهلكين مجموعة المستهلكين
الإزاحة الإزاحة

الاختلافات الرئيسية بين Apache Kafka وAzure Event Hubs

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

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

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

هل Apache Kafka هو الحل الصحيح لأعباء العمل الخاصة بك؟

من خلال بناء التطبيقات باستخدام Apache Kafka، من المفيد أيضاً فهم أن Azure Event Hubs جزء من مجموعة من الخدمات، والذي يتضمن أيضاً Azure Service Busو Azure Event Grid.

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

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

إذا كنت بحاجة إلى ميزات محددة من Apache Kafka غير متوفرة من خلال Event Hubs for Apache Kafka واجهة أو إذا كان نمط التنفيذ الخاص بك يتجاوز حصص Event Hubs ، فيمكنك أيضاً تشغيل مجموعة Apache Kafka الأصلية في Azure HDInsight .

الأمان والمصادقة

في كل مرة تنشر أو تستهلك أحداثاً من Event Hubs for Kafka، يحاول عميلك الوصول إلى موارد مراكز الأحداث. تريد التأكد من الوصول إلى الموارد باستخدام كيان مخول. عند استخدام بروتوكول Apache Kafka مع العملاء، يمكنك تعيين التكوين الخاص بك للمصادقة والتشفير باستخدام آليات SASL. عند استخدام مراكز الأحداث لـKafka يتطلب تشفير بروتوكول أمان طبقة النقل (TLS) (حيث إن جميع البيانات المنقولة مع مراكز الأحداث مشفرة بواسطة TLS)، يمكن القيام بذلك بتحديد خيار SASL_SSL في ملف التكوين الخاص بك.

توفر مراكز الأحداث Azure خيارات متعددة لتخويل الوصول إلى مواردك الآمنة.

  • OAuth 2.0
  • توقيع الوصول المشترك (SAS)

OAuth 2.0

تتكامل مراكز الأحداث مع معرف Microsoft Entra، الذي يوفر خادم تخويل مركزي متوافق مع OAuth 2.0 . باستخدام معرف Microsoft Entra، يمكنك استخدام التحكم في الوصول المستند إلى الدور Azure (Azure RBAC) لمنح أذونات دقيقة لهويات العميل. يمكنك استخدام هذه الميزة مع عملاء Kafka عن طريق تحديد SASL_SSL للبروتوكول وOAUTHBEARER للآلية. للحصول على تفاصيل حول أدوار Azure ومستوياته للوصول إلى النطاق، راجع تخويل الوصول باستخدام معرف Microsoft Entra.

bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=OAUTHBEARER
sasl.jaas.config=org.apache.kafka.common.security.oauthbearer.OAuthBearerLoginModule required;
sasl.login.callback.handler.class=CustomAuthenticateCallbackHandler

إشعار

خصائص التكوين أعلاه هي للغة برمجة Java. للحصول على عينات توضح كيفية استخدام OAuth مع مراكز الأحداث ل Kafka باستخدام لغات برمجة مختلفة، راجع العينات على GitHub.

توقيع الوصول المشترك

كما توفر مراكز الأحداث تواقيع الوصول المشترك (SAS) للوصول المفوض إلى "مراكز الأحداث" لموارد Kafka. يوفر الترخيص بالوصول باستخدام آلية OAuth 2.0 المستندة إلى الرمز المميز أمان فائق وسهولة استخدام عبر SAS. يمكن للأدوار المضمّنة أيضاً أن تلغي الحاجة إلى التفويض المستند إلى قائمة التحكم بالوصول (ACL)، والذي يجب على المستخدم صيانته وإدارته. يمكنك استخدام هذه الميزة مع عملاء Kafka عن طريق تحديد SASL_SSL للبروتوكول وPLAIN للآلية.

bootstrap.servers=NAMESPACENAME.servicebus.windows.net:9093
security.protocol=SASL_SSL
sasl.mechanism=PLAIN
sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="{YOUR.EVENTHUBS.CONNECTION.STRING}";

هام

استبدل {YOUR.EVENTHUBS.CONNECTION.STRING} بسلسلة الاتصال لمساحة اسم مراكز أحداث. لإرشادات حول الحصول على سلسلة الاتصال، راجع الحصول على سلسلة اتصال مراكز أحداث. هنا مثال على التكوين: sasl.jaas.config=org.apache.kafka.common.security.plain.PlainLoginModule required username="$ConnectionString" password="Endpoint=sb://mynamespace.servicebus.windows.net/;SharedAccessKeyName=RootManageSharedAccessKey;SharedAccessKey=XXXXXXXXXXXXXXXX";

إشعار

عند استخدام مصادقة SAS مع عملاء Kafka، لا يتم قطع الاتصال المنشأة عند إعادة إنشاء مفتاح SAS.

إشعار

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

العينات

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

ميزات مراكز أحداث Azure الأخرى

مراكز الأحداث لميزة Apache Kafka هي واحدة من ثلاثة بروتوكولات متوفرة في وقت واحد على مراكز أحداث Azure، تكمل HTTP وAMQP. يمكنك الكتابة مع أي من هذه البروتوكولات والقراءة مع أي بروتوكول آخر، بحيث يمكن لمنتجي Apache Kafka الحاليين متابعة النشر عبر Apache Kafka، ولكن يمكن للقارئ الاستفادة من التكامل الأصلي مع واجهة AMQP الخاصة بمراكز الأحداث، مثل Azure Stream Analytics أو Azure Functions. وعلى العكس من ذلك، يمكنك بسهولة دمج مراكز أحداث Azure في شبكات توجيه AMQP كنقطة نهاية مستهدفة، ومع ذلك قراءة البيانات من خلال عمليات تكامل Apache Kafka.

بالإضافة إلى ذلك، تعمل ميزات "مراكز الأحداث" مثل Capture، والتي تمكن الأرشفة طويلة الأجل عالية التكلفة من حيث التكلفة عبر تخزين Azure Blob وتخزين مستودع البيانات Azure، وGeo Disaster-Recovery أيضاً مع مراكز الأحداث لميزة Kafka.

التكرار

تدعم مراكز أحداث Azure ل Apache Kafka كلا من المنتجين المتكررين والمستهلكين المتكررين.

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

اختلافات الميزات مع Apache Kafka

الهدف من مراكز الأحداث ل Apache Kafka هو توفير الوصول إلى قدرات Azure Event Hubs للتطبيقات التي تم تأمينها في واجهة برمجة تطبيقات Apache Kafka، وإلا يجب أن تكون مدعومة من قبل مجموعة Apache Kafka.

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

الحركات

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

الضغط

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

يمكن لمطوري تطبيقات منتج Kafka تمكين ضغط الرسائل عن طريق تعيين الخاصية compression.type. في المعاينة العامة، خوارزمية الضغط الوحيدة المدعومة هي gzip.

Compression.type = none | gzip

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

عمليات التدفق من Kafka

Kafka عمليات الدفق هي مكتبة عميل لتحليلات الدفق التي تعد جزءا من مشروع Apache Kafka مفتوح المصدر، ولكنها منفصلة عن وسيط أحداث Apache Kafka.

السبب الأكثر شيوعاً وراء مطالبة عملاء Azure Event Hubs بدعم Kafka Streams هو اهتمامهم بمنتج "ksqlDB" من Confluent. "ksqlDB" هو مشروع مصدر مشترك مملوك تم ترخيصه بحيث لا يوجد مورد "يقدم برنامجاً كخدمة أو نظاماً أساسياً كخدمة أو بنية أساسية كخدمة أو غير ذلك يُسمح للخدمات المماثلة عبر الإنترنت التي تتنافس مع منتجات أو خدمات Confluent باستخدام أو تقديم دعم "ksqlDB". من الناحية العملية، إذا كنت تستخدم ksqlDB، فيجب عليك إما تشغيل Kafka بنفسك وإما يجب عليك استخدام عروض Confluent السحابية. قد تؤثر شروط الترخيص أيضاً على عملاء Azure الذين يقدمون خدمات لغرض مستبعد من الترخيص.

دون ksqlDB، يمتلك Kafka Streams إمكانيات أقل من العديد من الأطر والخدمات البديلة، ومعظمها يحتوي على واجهات SQL متدفقة مضمنة، وكلها تتكامل مع Azure Event Hubs اليوم:

يمكن للخدمات والأطر المدرجة بشكل عام الحصول على تدفقات الأحداث والبيانات المرجعية مباشرة من مجموعة متنوعة من المصادر من خلال المحولات. يمكن لـ Kafka Streams الحصول على البيانات فقط من Apache Kafka وبالتالي فإن مشاريع التحليلات الخاصة بك مقفلة في Apache Kafka. لاستخدام البيانات من مصادر أخرى، يجب عليك أولاً استيراد البيانات إلى Apache Kafka باستخدام إطار عمل Kafka Connect.

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

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

قدمت هذه المقالة مقدمة لمراكز الأحداث الخاصة بـ Kafka. لمعرفة المزيد، راجع دليل مطوِر Apache Kafka لـ مراكز أحداث Azure.

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

أيضا، راجع عينات OAuth على GitHub.