أباتشي كافكا
تحتوي هذه المقالة على العديد من المشكلات. يُرجى المساعدة في تحسينها أو مناقشة هذه المشكلات على صفحة المناقشة . ( تعرف على كيفية ومتى يمكنك إزالة هذه الرسائل )
|
| المؤلف(ون) الأصلي(ون) | لينكدإن |
|---|---|
| المطور(ون) | مؤسسة أباتشي للبرمجيات |
| الإصدار الأولي | يناير 2011 [2] |
| إصدار مستقر | 3.8.0 [3]
/ 26 يوليو 2024 |
| مستودع |
|
| مكتوب في | سكالا ، جافا |
| نظام التشغيل | متعدد المنصات |
| يكتب | معالجة التدفق ، وسيط الرسائل |
| رخصة | رخصة أباتشي 2.0 |
| موقع إلكتروني | kafka.apache.org |
Apache Kafka هو منصة لتخزين الأحداث ومعالجة التدفقات موزعة . وهو نظام مفتوح المصدر طورته مؤسسة Apache Software Foundation مكتوب بلغة Java و Scala . ويهدف المشروع إلى توفير منصة موحدة وعالية الإنتاجية ومنخفضة زمن الوصول للتعامل مع موجزات البيانات في الوقت الفعلي. يمكن لـ Kafka الاتصال بأنظمة خارجية (لاستيراد/تصدير البيانات) عبر Kafka Connect، كما يوفر مكتبات Kafka Streams لتطبيقات معالجة التدفقات. يستخدم Kafka بروتوكولًا ثنائيًا قائمًا على TCP محسّنًا للكفاءة ويعتمد على تجريد "مجموعة الرسائل" الذي يجمع الرسائل بشكل طبيعي معًا لتقليل النفقات العامة لرحلة الذهاب والإياب على الشبكة. يؤدي هذا إلى "حزم شبكة أكبر، وعمليات قرص متسلسلة أكبر، وكتل ذاكرة متجاورة [...] مما يسمح لـ Kafka بتحويل تدفق متقطع من عمليات كتابة الرسائل العشوائية إلى عمليات كتابة خطية." [ 4]
تاريخ
تم تطوير كافكا في الأصل في LinkedIn ، وتم لاحقًا فتح المصدر في أوائل عام 2011. ساعد جاي كريبس ونيها ناركهيدي وجون راو في إنشاء كافكا. [5] تخرج من Apache Incubator في 23 أكتوبر 2012. [6] اختار جاي كريبس تسمية البرنامج على اسم المؤلف فرانز كافكا لأنه "نظام مُحسَّن للكتابة"، وقد أحب عمل كافكا. [7]
التطبيقات
يعتمد Apache Kafka على سجل الالتزام ، ويسمح للمستخدمين بالاشتراك فيه ونشر البيانات على أي عدد من الأنظمة أو التطبيقات في الوقت الفعلي. تتضمن التطبيقات النموذجية إدارة مطابقة الركاب والسائقين في Uber ، وتوفير تحليلات في الوقت الفعلي والصيانة التنبؤية للمنزل الذكي لشركة British Gas ، وأداء العديد من الخدمات في الوقت الفعلي عبر LinkedIn بالكامل. [8]
بنيان
لا يستشهد هذا القسم بأي مصادر . ( يونيو 2023 ) |

يخزن كافكا رسائل القيمة الرئيسية التي تأتي من عمليات عديدة عشوائية تسمى المنتجين . يمكن تقسيم البيانات إلى "أقسام" مختلفة داخل "موضوعات" مختلفة. داخل القسم، يتم ترتيب الرسائل بدقة حسب إزاحاتها (موضع الرسالة داخل القسم)، ويتم فهرستها وتخزينها مع علامة زمنية. يمكن للعمليات الأخرى التي تسمى "المستهلكين" قراءة الرسائل من الأقسام. لمعالجة التدفق، تقدم كافكا واجهة برمجة التطبيقات Streams التي تسمح بكتابة تطبيقات Java التي تستهلك البيانات من كافكا وتكتب النتائج مرة أخرى إلى كافكا. يعمل Apache Kafka أيضًا مع أنظمة معالجة التدفق الخارجية مثل Apache Apex و Apache Beam و Apache Flink و Apache Spark و Apache Storm و Apache NiFi .
يعمل Kafka على مجموعة من خادم واحد أو أكثر (يُطلق عليها الوسطاء)، ويتم توزيع أقسام جميع الموضوعات عبر عقد المجموعة. بالإضافة إلى ذلك، يتم تكرار الأقسام إلى وسطاء متعددين. تسمح هذه البنية التحتية لـ Kafka بتسليم تدفقات ضخمة من الرسائل بطريقة متسامحة مع الأخطاء وقد سمحت لها باستبدال بعض أنظمة المراسلة التقليدية مثل Java Message Service (JMS) و Advanced Message Queuing Protocol (AMQP)، إلخ. منذ إصدار 0.11.0.0، تقدم Kafka عمليات كتابة معاملاتية ، والتي توفر معالجة تدفق مرة واحدة بالضبط باستخدام واجهة برمجة تطبيقات Streams.
يدعم Kafka نوعين من الموضوعات: العادية والمضغوطة. يمكن تكوين الموضوعات العادية بوقت احتفاظ أو مساحة محدودة. إذا كانت هناك سجلات أقدم من وقت الاحتفاظ المحدد أو إذا تم تجاوز مساحة الحد الأقصى لقسم، يُسمح لـ Kafka بحذف البيانات القديمة لتحرير مساحة التخزين. بشكل افتراضي، يتم تكوين الموضوعات بوقت احتفاظ يبلغ 7 أيام، ولكن من الممكن أيضًا تخزين البيانات إلى أجل غير مسمى. بالنسبة للموضوعات المضغوطة، لا تنتهي صلاحية السجلات بناءً على حدود الوقت أو المساحة. بدلاً من ذلك، يعامل Kafka الرسائل اللاحقة كتحديثات للرسائل السابقة بنفس المفتاح ويضمن عدم حذف أحدث رسالة لكل مفتاح. يمكن للمستخدمين حذف الرسائل بالكامل عن طريق كتابة ما يسمى برسالة شاهد القبر بقيمة فارغة لمفتاح معين.
هناك خمس واجهات برمجة تطبيقات رئيسية في Kafka:
- واجهة برمجة التطبيقات للمُنتج – تسمح للتطبيق بنشر تدفقات السجلات.
- واجهة برمجة التطبيقات للمستهلك - تسمح للتطبيق بالاشتراك في الموضوعات ومعالجة تدفقات السجلات.
- ربط واجهة برمجة التطبيقات – تنفيذ واجهات برمجة التطبيقات القابلة لإعادة الاستخدام الخاصة بالإنتاج والاستهلاك والتي يمكنها ربط الموضوعات بالتطبيقات الموجودة.
- واجهة برمجة التطبيقات Streams – تقوم هذه الواجهة بتحويل تدفقات الإدخال إلى إخراج وإنتاج النتيجة.
- واجهة برمجة التطبيقات الإدارية – تُستخدم لإدارة موضوعات Kafka والوسطاء وكائنات Kafka الأخرى.
يتم فصل واجهات برمجة التطبيقات للمستهلك والمنتج عن الوظائف الأساسية لـ Kafka من خلال بروتوكول مراسلة أساسي . يتيح هذا كتابة طبقات واجهة برمجة تطبيقات متوافقة في أي لغة برمجة بنفس كفاءة واجهات برمجة تطبيقات Java المضمنة مع Kafka. يحتفظ مشروع Apache Kafka بقائمة بواجهات برمجة التطبيقات التابعة لجهات خارجية.
واجهات برمجة تطبيقات كافكا
ربط واجهة برمجة التطبيقات
لا يستشهد هذا القسم بأي مصادر . ( يونيو 2023 ) |
Kafka Connect (أو Connect API) هو إطار عمل لاستيراد/تصدير البيانات من/إلى أنظمة أخرى. تمت إضافته في إصدار Kafka 0.9.0.0 ويستخدم واجهة برمجة التطبيقات Producer and Consumer داخليًا. يقوم إطار عمل Connect نفسه بتنفيذ ما يسمى "الموصلات" التي تنفذ المنطق الفعلي لقراءة/كتابة البيانات من أنظمة أخرى. تحدد واجهة برمجة التطبيقات Connect واجهة البرمجة التي يجب تنفيذها لبناء موصل مخصص. يتوفر بالفعل العديد من الموصلات مفتوحة المصدر والتجارية لأنظمة البيانات الشائعة. ومع ذلك، فإن Apache Kafka نفسه لا يتضمن موصلات جاهزة للإنتاج.
واجهة برمجة التطبيقات للتدفقات
Kafka Streams (أو Streams API) هي مكتبة معالجة تدفق مكتوبة بلغة Java. تمت إضافتها في إصدار Kafka 0.10.0.0. تسمح المكتبة بتطوير تطبيقات معالجة تدفق مع الحفاظ على الحالة وقابلة للتطوير ومرنة ومتسامحة تمامًا مع الأخطاء. واجهة برمجة التطبيقات الرئيسية هي لغة مجال معالجة تدفق محددة (DSL) تقدم مشغلات عالية المستوى مثل التصفية والخريطة والتجميع والنوافذ والتجميع والانضمامات ومفهوم الجداول. بالإضافة إلى ذلك، يمكن استخدام واجهة برمجة تطبيقات المعالج لتنفيذ مشغلات مخصصة لنهج تطوير أكثر انخفاضًا في المستوى. يمكن أيضًا مزج واجهة برمجة تطبيقات DSL والمعالج. لمعالجة التدفق مع الحفاظ على الحالة، تستخدم Kafka Streams RocksDB للحفاظ على حالة المشغل المحلي. نظرًا لأن RocksDB يمكنه الكتابة على القرص، يمكن أن تكون الحالة المحفوظة أكبر من الذاكرة الرئيسية المتاحة. لتسامح الأخطاء، تتم أيضًا كتابة جميع التحديثات لمخازن الحالة المحلية في موضوع في مجموعة Kafka. يتيح هذا إعادة إنشاء الحالة من خلال قراءة هذه الموضوعات وإدخال جميع البيانات إلى RocksDB. أحدث إصدار من Streams API هو 2.8.0. [9] يحتوي الرابط أيضًا على معلومات حول كيفية الترقية إلى أحدث إصدار. [10]
التوافق مع الإصدار
لا يستشهد هذا القسم بأي مصادر . ( يونيو 2023 ) |
حتى الإصدار 0.9.x، أصبحت وسطاء Kafka متوافقة مع الإصدارات الأقدم فقط. ومنذ إصدار Kafka 0.10.0.0، أصبحت الوسطاء متوافقة أيضًا مع الإصدارات الأحدث. إذا اتصل عميل أحدث بوسيط أقدم، فيمكنه فقط استخدام الميزات التي يدعمها الوسيط. بالنسبة لواجهة برمجة تطبيقات Streams، تبدأ التوافقية الكاملة مع الإصدار 0.10.1.0: تطبيق Kafka Streams 0.10.1.0 غير متوافق مع وسطاء 0.10.0 أو الإصدارات الأقدم.
أداء
تتطلب مراقبة الأداء الشامل تتبع المقاييس من الوسطاء والمستهلكين والمنتجين، بالإضافة إلى مراقبة ZooKeeper ، الذي يستخدمه Kafka للتنسيق بين المستهلكين. [11] [12] يوجد حاليًا العديد من منصات المراقبة لتتبع أداء Kafka. بالإضافة إلى هذه المنصات، يمكن أيضًا جمع بيانات Kafka باستخدام أدوات مجمعة بشكل شائع مع Java، بما في ذلك JConsole . [13]
انظر أيضا
- رابيت ام كيو
- أباتشي بولسار
- ريديس
- ناتس
- أباتشي فلينك
- أباتشي سامزا
- البث المباشر لـ Apache Spark
- خدمة توزيع البيانات
- أنماط تكامل المؤسسة
- نظام المراسلة المؤسسي
- تحليلات البث
- SOA الموجهة بالأحداث
- تدفق بيانات هورتونووركس
- برامج وسيطة موجهة للرسائل
- هندسة موجهة نحو الخدمة
مراجع
- ^ "Apache Kafka at GitHub". github.com . مؤرشف من الأصل في 16 يناير 2023 . تم الاسترجاع 5 مارس 2018 .
- ^ "إتاحة Kafka، قائمة الرسائل الموزعة على LinkedIn، مفتوحة المصدر". مؤرشف من الأصل في 26 ديسمبر 2022 . تم الاسترجاع 27 أكتوبر 2016 .
- ^ "الإصدار 3.8.0". 26 يوليو 2024. تم الاسترجاع 20 أغسطس 2024 .
- ^ "الكفاءة". kafka.apache.org . تم الاسترجاع في 2019-09-19 .
- ^ لي، س. (2020). ترك وظيفته ذات الأجر المرتفع في لينكد إن ثم بنى شركة بقيمة 4.5 مليار دولار في مجال لم تسمع به من قبل. فوربس. تم الاسترجاع في 8 يونيو 2021، من Forbes_Kreps المؤرشف في 2023-01-31 على موقع Wayback Machine .
- ^ "Apache Incubator: Kafka Incubation Status". مؤرشف من الأصل في 2022-10-17 . تم الاسترجاع 2022-10-17 .
- ^ ناركهيدي، نيها؛ شابيرا، جوين؛ بالينو، تود (2017). "الفصل الأول". كافكا: الدليل النهائي. أوريلي. رقم ISBN 9781491936115غالبًا ما يتساءل الناس
عن كيفية حصول كافكا على اسمه وما إذا كان له أي علاقة بالتطبيق نفسه. قدم جاي كريبس الرؤية التالية: "اعتقدت أنه بما أن كافكا هو نظام مُحسَّن للكتابة باستخدام، فإن اسم الكاتب سيكون منطقيًا. لقد أخذت الكثير من دروس الأدب في الكلية وأحببت فرانز كافكا".
- ^ "ما هو Apache Kafka". confluent.io . مؤرشف من الأصل في 2020-08-17 . تم الاسترجاع 2018-05-04 .
- ^ "أباتشي كافكا". أباتشي كافكا . مؤرشف من الأصل في 2021-09-10 . تم الاسترجاع 2021-09-10 .
- ^ "أباتشي كافكا". أباتشي كافكا . تم الاسترجاع في 2021-09-10 .
- ^ "مراقبة مقاييس أداء كافكا". 2016-04-06. مؤرشف من الأصل في 2020-11-08 . تم الاسترجاع 2016-10-05 .
- ^ موزاكيتيس، إيفان (2016-04-06). "مراقبة مقاييس أداء كافكا". Datadog . مؤرشف من الأصل في 2020-11-08 . تم الاسترجاع 2016-10-05 .
- ^ "جمع مقاييس أداء كافكا - Datadog". 2016-04-06. مؤرشف من الأصل في 2020-11-27 . تم الاسترجاع 2016-10-05 .
روابط خارجية
- الموقع الرسمي
