أكا (مجموعة أدوات)
أكا عبارة عن منصة متاحة المصدر ، ومجموعة تطوير برمجية (SDK)، ومجموعة أدوات، وبيئة تشغيل تُسهّل بناء التطبيقات المتزامنة والموزعة على JVM ، على سبيل المثال، تطبيقات الذكاء الاصطناعي الوكيل، والخدمات المصغرة ، والحوسبة الطرفية/إنترنت الأشياء، وتطبيقات البث المباشر. تدعم أكا نماذج برمجة متعددة للتزامن والتوزيع، لكنها تُركّز على التزامن القائم على الممثلين ، مستلهمةً ذلك من لغة إرلانج . [ 1 ]
توجد روابط اللغة لكل من Java و Scala . عكا مكتوب بشكل رئيسي في سكالا. [ 2 ]
تاريخ
تم إصدار تطبيق الممثل، الذي كتبه فيليب هالر، في يوليو 2006 كجزء من Scala 2.1.7. [ 3 ] بحلول عام 2008، بدأت Scala تجذب الانتباه لاستخدامها في تطبيقات الخوادم المعقدة، ولكن التزامن كان لا يزال يُحقق عادةً عن طريق إنشاء سلاسل عمليات تتشارك الذاكرة وتتزامن عند الضرورة باستخدام الأقفال. وإدراكًا منه للصعوبات التي تواجه هذا النهج، واستلهامًا من دعم مكتبة لغة البرمجة Erlang لكتابة تطبيقات عالية التزامن والتوزيع والاستجابة للأحداث، أنشأ المبرمج السويدي جوناس بونير Akka لتوفير إمكانيات مماثلة لـ JVM. بدأ بونير العمل على Akka في أوائل عام 2009 [ 4 ] وكتب رؤيته لها في يونيو من ذلك العام. [ 5 ] كان الإصدار العام الأول هو Akka 0.5، [ 6 ] الذي أُعلن عنه في يناير 2010. [ 7 ] أصبحت Akka الآن جزءًا من منصة Lightbend إلى جانب إطار عمل Play ولغة البرمجة Scala .
في سبتمبر 2022، أعلنت شركة لايت بيند أن أكا ستغير ترخيصها من ترخيص البرمجيات الحرة أباتشي 2.0 إلى ترخيص احتكاري متاح المصدر ، يُعرف باسم ترخيص المصدر التجاري (BSL). أي كود جديد بموجب ترخيص المصدر التجاري سيصبح متاحًا بموجب ترخيص أباتشي بعد ثلاث سنوات. [ 8 ]
أباتشي بيكو هو فرع مرخص من أباتشي لعكا [ 9 ] .
السمات المميزة
النقاط الرئيسية التي تميز التطبيقات القائمة على Akka هي:
- الاتصال والتوزيع والتزامن غير المتزامن وغير المحظور: تطبيقات Akka تعتمد على الأحداث، وغير متزامنة، وغير محظورة: لا تتم مشاركة أي بيانات قابلة للتغيير، ولا يتم استخدام بدائيات التزامن؛ تنفذ Akka نموذج الممثل مع دعم البث، والنشر والاشتراك، وHTTP، وgRPC، والعديد من البروتوكولات الأخرى (من خلال وحدة Alpakka).
- شفافية الموقع: تتفاعل الخدمات/الوكلاء المبنية على Akka بنفس الطريقة سواءً كانت على نفس المضيف أو على مضيفات منفصلة (معالجات مركزية، أو عقد، أو مراكز بيانات، أو بيئات سحابية)، وتتواصل مباشرةً أو عبر قنوات التوجيه. هذا يعني أن بنية التطبيق ليست ثابتة بل ديناميكية، ويمكن تعديلها عند النشر من خلال آلية تهيئة، مما يسمح بتوسيع نطاق البرنامج (للاستفادة من خوادم أقوى)، أو توسيعه أفقيًا (للاستفادة من عدد أكبر من الخوادم)، أو تجميعه في مجموعات، دون الحاجة إلى تعديل الشفرة البرمجية.
- الإصلاح الذاتي من خلال إدارة الأعطال التصريحية: تُرتّب العناصر بشكل هرمي فيما يُعرف بـ"التسلسلات الهرمية للمشرفين". تُعامل الأعطال كحقائق ثابتة، وأحداث مُجسّدة، وتُرسل بشكل غير متزامن إلى مشرف المكون، الذي يُمكنه إدارة العطل في سياق آمن وسليم خارج المكون المُعطّل (والذي، بفضل شفافية الموقع، يُمكن أن يكون على عقدة أخرى أو حتى مركز بيانات آخر). على عكس إرلانج، تُطبّق أكا الإشراف الأبوي، ما يعني أن كل عنصر يُنشأ ويُشرف عليه العنصر الأبوي الخاص به.
- استمرارية البيانات المنسوخة في الذاكرة: تتميز خدمات/وكلاء Akka بالاستمرارية، حيث تعمل حالتها في الذاكرة كمصدر موثوق للبيانات، ويتم تسجيل كل حدث يُغير الحالة (حقيقة ثابتة) على القرص بالترتيب الذي وصل به، وذلك باستخدام ما يُعرف بتجميع الأحداث. تتيح إعادة تشغيل سجل الأحداث استعادة البيانات بسلاسة بعد الأعطال، وتجميع النسخ المتماثلة، كما توفر سجل تدقيق مدمج (تاريخ كامل) لكل ما حدث في النظام.
- التجميع متعدد المناطق/متعدد السحابات: يتم تجميع خدمات/وكلاء Akka تلقائيًا "من الداخل". كل خدمة عبارة عن مجموعة عقد مكررة ومجزأة بالكامل يمكنها أن تمتد عبر مراكز بيانات أو مناطق أو سحابات متعددة، أو تمتد من السحابة إلى الحافة.
يتكون نموذج البرمجة لـ Akka من Akka SDK ومكتبات Akka:
- مكتبات أكا هي مجموعة أدوات مفتوحة المصدر لبناء الأنظمة الموزعة. تتميز ببنية معيارية، حيث توفر الوحدة الأساسية الممثلين. وتتوفر وحدات أخرى لإضافة ميزات مثل توزيع الممثلين عبر الشبكة، ودعم المجموعات ، ومصادر الأوامر والأحداث، وتوزيع البيانات وإدارتها (من خلال CRDTs وتسجيل الأحداث)، والتكامل مع أنظمة خارجية متنوعة عبر وحدة تكامل البث Alpakka ، وحتى دعم نماذج التزامن الأخرى مثل معالجة التدفق غير المتزامنة و Futures .
- Akka SDK هو إطار عمل عالي المستوى ومحدد المعايير مبني على مكتبات Akka. وهو يجسد أكثر الأنماط شيوعًا وفائدة وأفضل الممارسات المكتسبة من استخدام مكتبات Akka من خلال مجموعة من المكونات المنفصلة القابلة للتركيب (الكيان، والعرض، ونقطة النهاية، وسير العمل، والمستهلك، والمؤقت)، مما يسمح للمطورين ببناء تطبيقات عالية الاستجابة وقابلة للتوسع ومرنة وموزعة وقائمة على الوكلاء والخدمات.
العلاقة بالمكتبات الأخرى
ظهرت أطر عمل ومجموعات أدوات أخرى لتشكيل نظام بيئي حول أكا:
- يوفر إطار عمل Play لتطوير تطبيقات الويب التكامل مع Akka [ 10 ]
- حتى الإصدار 1.6، استخدم Apache Spark Akka للاتصال بين العقد [ 11 ]
- تدعم مكتبة خادم الويب Socko تنفيذ واجهات برمجة تطبيقات REST لتطبيقات Akka [ 12 ]
- توفر مكتبة eventsourced [ 13 ] دعمًا لبنية تعتمد على الأحداث (انظر أيضًا تصميم يعتمد على المجال ) لممثلي Akka
- تعتمد أداة اختبار الإجهاد Gatling لاختبار تحميل خوادم الويب على Akka [ 14 ]
- يوفر إطار عمل الويب Scalatra التكامل مع Akka. [ 15 ]
- يمكن دمج إطار عمل تطوير تطبيقات الويب Vaadin مع Akka [ 16 ]
- تم بناء نظام Apache Flink (منصة لمعالجة البيانات المتدفقة والمجمعة الموزعة) RPC باستخدام Akka [ 17 ] ولكنه معزول منذ الإصدار 1.14. [ 18 ]
- تم تطبيق إطار عمل Lagom لبناء الخدمات المصغرة التفاعلية على Akka. [ 19 ]
هناك أكثر من 250 مشروعًا عامًا مسجلاً على GitHub والتي تستخدم Akka. [ 20 ]
منشورات عن أكا
هناك العديد من الكتب عن أكا:
- أساسيات أكا [ 21 ]
- أمثلة على كود أكا
- التزامن في أكا [ 22 ]
- عكا في العمل، الطبعة الثانية [ 23 ]
- أكا في العمل [ 24 ]
- أكا الفعالة [ 25 ]
- العقود الآجلة القابلة للتركيب باستخدام Akka 2.0، والتي تتميز بأمثلة على أكواد Java وScala وAkka [ 26 ]
تظهر أكا أيضًا في:
- "الممثلون في سكالا" لـ ب. هالر [ 27 ]
- N. رايشودوري "سكالا في العمل" [ 28 ]
- كتاب " البرمجة الوظيفية لمطوري جافا" لـ د. وامبلر [ 29 ]
- كتاب الطبخ "سكالا" لـ أ. ألكسندر [ 30 ]
- V. Subramaniam's "برمجة التزامن على JVM" [ 31 ]
- كتاب "تطبيقات الويب التفاعلية" لـ م. برنهاردت [ 32 ]
إلى جانب العديد من المقالات المنشورة على الإنترنت التي تصف الاستخدام التجاري لـ Akka، [ 33 ] [ 34 ] توجد أيضًا مقالات استعراضية عنها. [ 35 ] [ 36 ]
مراجع
- ↑ فريق عكا. "مقدمة لممثلي سكالا" . تم الاسترجاع في 17 سبتمبر 2018 .
- ↑ يوفانوفيتش، فوجين. "دليل ترحيل عناصر سكالا" . مؤرشف من الأصل في 5 ديسمبر 2013. تم الاطلاع عليه في 13 مارس 2013 .
- ↑ "تاريخ إصدارات سكالا - الإصدارات القديمة" . scala-lang.org. 16-02-2009. مؤرشف من الأصل في 04-01-2013.
- ↑ جوناس بونير (2009-02-16). "إعداد المشروع الأولي" . github.com.
- ↑ بونير، جوناس. "نواة ممثل أكا" . scala-language@googlegroups.com . مؤرشف من الأصل بتاريخ 4 مارس 2016. تم الاطلاع عليه بتاريخ 13 يوليو 2017 .
- ^ جوناس بونير (2009-07-12). "الإصدار 0.5" . github.com.
- ↑ جوناس بونير (2010-01-04). "تقديم أكا - قابلية توسع أبسط، وتحمل للأعطال، وتزامن، وتحكم عن بعد من خلال الممثلين" . jonasboner.com.
- ↑ بونير، جوناس. "لماذا نغير ترخيص أكا" . تم الاطلاع عليه في 7 سبتمبر 2022 .
- ↑ «مؤسسة برمجيات أباتشي تعلن عن مشروعها الجديد رفيع المستوى Apache® Pekko™» . مؤسسة برمجيات أباتشي . ١٦ مايو ٢٠٢٤. تاريخ الاطلاع: ٢٨ أكتوبر ٢٠٢٥ .
- ↑ "وثائق إطار عمل Play: التكامل مع Akka" . playframework.com . تم الاطلاع عليه بتاريخ 6 يونيو 2013 .
- ↑ "مصادر مشروع سبارك" . github.com . تم الاطلاع عليه بتاريخ 6 يونيو 2013 .
- ↑ "خادم الويب سوكو" . sockoweb.org . تم الاطلاع عليه بتاريخ 6 يونيو 2013 .
- ↑ "مكتبة تعتمد على الأحداث" . eligosource . تم الاطلاع عليه بتاريخ 6 يونيو 2013 .
- ↑ "أداة اختبار إجهاد جاتلينج" . github.com . تم الاطلاع عليه بتاريخ 6 يونيو 2013 .
- ^ "عكا – سكالاترا" . scalatra.org . تم الاسترجاع بتاريخ 2022-10-06 .
- ↑ "فادين في عكا" . فادين.كوم . تم الاسترجاع 26 أبريل 2014 .
- ↑ "أباتشي فلينك - عكا للفوز !" . flink.apache.org . تم الاسترجاع 2 ديسمبر 2015 .
- ↑ "Apache Flink: Scala Free in One Fifteen" . flink.apache.org . 22 فبراير 2022. تاريخ الاسترجاع: 22 أبريل 2022 .
- ↑ "Lagom - التكامل مع Akka" .
- ↑ تشاروفي، سميرة. "مجموعة مشروع ممثل Akka على GitHub" . cs.illinois.edu. مؤرشف من الأصل بتاريخ 30-10-2012 . تم الاسترجاع 2013/06/06 .
- ↑ غوبتا، منيش ك. (2012). أساسيات أكا . دار نشر باكت. ص 334. ISBN 978-1849518284.
- ^ وايت ، ديريك (2013). عملة عكا . أرتيما. ص. 521. ردمك 978-0981531663.
- ^ لوبيز-سانشو أبراهام، فرانسيسكو (2023). عكا في العمل، الطبعة الثانية منشورات مانينغ. ص. 400. ردمك 978-1617299216.
- ^ روستنبرج ، ريموند (2013). عكا في العمل . منشورات مانينغ. ص. 475. ردمك 978-1617291012.
- ^ ألين ، جيمي (2013). عكا فعالة . أورايلي وسائل الإعلام. ص. 74. ردمك 978-1449360078.
- ↑ سلين، مايكل (2012). مستقبلات قابلة للتركيب باستخدام أكا 2.0 . بحوث مايكرونوتكس. ص 178. ISBN 978-0984278923.
- ^ هالر ، فيليب (2012). الجهات الفاعلة في سكالا . أرتيما. ص. 169. ردمك 978-0981531656.
- ^ رايشودوري ، نيلانجان (2013). سكالا في العمل . منشورات مانينغ. ص. 416. ردمك 978-1935182757.
- ↑ وامبلر ، دين (2011). البرمجة الوظيفية لمطوري جافا . دار نشر أورايلي. ص 90. ISBN 978-1449311032.
- ↑ ألكسندر، ألفين (2013). كتاب طبخ سكالا . دار نشر أورايلي. ص 722. ISBN 978-1449339616.
- ↑ سوبرامانيام، فينكات (2011). برمجة التزامن على JVM: إتقان التزامن، وSTM، والممثلين . براغماتيك بوكشيلف. ص 280. ISBN 978-1934356760.
- ↑ برنهاردت، مانويل (2016). تطبيقات الويب التفاعلية: تغطي Play وAkka وReactive Streams . منشورات مانينغ. ص 328. ISBN 9781633430099.
- ↑ دارو، بارب (25 يونيو 2012). "شبكات جونيبر توقع اتفاقية مع سكالا" . gigaom.com. مؤرشف من الأصل في 2 يونيو 2013. تم الاطلاع عليه في 8 يونيو 2013 .
- ↑ روس، ديفيد. "توسيع نطاق واجهة برمجة تطبيقات Klout باستخدام Scala وAkka وPlay" . تم الاطلاع عليه بتاريخ 8 يونيو 2013 .
- ↑ هاينز، ستيفن (8 مايو 2013). "مشاريع جافا مفتوحة المصدر: أكا" . جافا وورلد . تم الاسترجاع في 15 يوليو 2020 .
- ↑ "مجلة جافا 6.13" . jaxenter.de. مؤرشف من الأصل بتاريخ 13 أغسطس 2013. تم الاطلاع عليه بتاريخ 8 يونيو 2013 .
روابط خارجية
- جافا (منصة برمجية)
- مجموعات تطوير البرمجيات
- أدوات تطوير جافا
- نموذج الممثل (علوم الحاسوب)
- البرامج التي تستخدم ترخيص المصدر التجاري
