ZeroMQ

ZeroMQ (تُكتب أيضًا ØMQ أو 0MQ أو ZMQ ) هي مكتبة مراسلة غير متزامنة ، مُصممة للاستخدام في التطبيقات الموزعة أو المتزامنة. توفر المكتبة قائمة انتظار للرسائل ، ولكن على عكس برامج الوسيطة الموجهة نحو الرسائل ، يمكن لنظام ZeroMQ العمل بدون وسيط رسائل مُخصص ؛ يشير الصفر في الاسم إلى "الوسيط الصفري". [ 3 ] صُممت واجهة برمجة التطبيقات (API) الخاصة بالمكتبة لتُحاكي مقابس بيركلي .

تم تطوير ZeroMQ بواسطة مجتمع كبير من المساهمين، أسسته شركة iMatix، التي تمتلك اسم النطاق والعلامات التجارية. وتتوفر روابط خارجية للعديد من لغات البرمجة الشائعة.

تكنولوجيا

توفر واجهة برمجة تطبيقات ZeroMQ مقابس (وهي نوع من التعميم لمقابس IP التقليدية ومقابس نطاق Unix )، حيث يمكن لكل مقبس منها تمثيل اتصال متعدد الأطراف بين نقاط النهاية . ونظرًا لعملها بدقة الرسائل، فإنها تتطلب استخدام نمط مراسلة ، وهي مُحسَّنة خصيصًا لهذا النوع من الأنماط.

أنماط ZeroMQ الأساسية هي:

طلب – رد
يربط هذا النمط مجموعة من العملاء بمجموعة من الخدمات. وهو نمط استدعاء إجراء عن بُعد وتوزيع المهام.
انشر واشترك
يربط هذا النمط مجموعة من الناشرين بمجموعة من المشتركين. وهو نمط لتوزيع البيانات.
الدفع والسحب (خط الأنابيب)
يربط هذا النمط العقد بنمط تفرع/تجميع قد يتضمن خطوات متعددة وحلقات. وهو نمط لتوزيع المهام وجمعها بالتوازي .
زوج حصري
يربط مقبسين في زوج حصري. (هذا نمط متقدم منخفض المستوى لحالات استخدام محددة.)

يُحدد كل نمط بنية شبكية معينة. يُحدد نمط الطلب والاستجابة ما يُسمى "حافلة الخدمة"، ويُحدد نمط النشر والاشتراك "شجرة توزيع البيانات"، ويُحدد نمط الدفع والسحب "خط أنابيب متوازي". صُممت جميع الأنماط عمدًا لتكون قابلة للتوسع بلا حدود، وبالتالي قابلة للاستخدام على نطاق الإنترنت. [ 4 ]

تُعامل أي رسالة عبر المقبس ككتلة بيانات غير شفافة . ويمكن تصفية تسليمها إلى المشترك تلقائيًا بناءً على السلسلة النصية التي تسبق كتلة البيانات. وتشمل وسائل نقل الرسائل المتاحة بروتوكول TCP ، وPGM (البث المتعدد الموثوق)، والاتصال بين العمليات ( IPC )، والاتصال بين الخيوط (ITC).

تتميز مكتبة ZeroMQ الأساسية بأداء ممتاز بفضل نموذج الترابط الداخلي الخاص بها، ويمكنها التفوق على تطبيقات TCP التقليدية من حيث الإنتاجية باستخدام تقنية تجميع الرسائل التلقائية. [ 5 ] [ 6 ]

تُطبّق ZeroMQ بروتوكول ZMTP، وهو بروتوكول نقل الرسائل الخاص بـ ZeroMQ. [ 7 ] يُحدّد ZMTP قواعد التوافق مع الإصدارات السابقة، وآليات أمان قابلة للتوسيع، وتأطير الأوامر والرسائل، وبيانات تعريف الاتصال، ووظائف أخرى على مستوى النقل. يتزايد عدد المشاريع التي تُطبّق ZMTP مباشرةً كبديل لاستخدام تطبيقات ZeroMQ الكاملة. [ 8 ]

تاريخ

قام بيتر هينتجنس، الرئيس التنفيذي لشركة iMatix، بتسجيل نطاق zeromq.org في مايو 2007 وبدأ مشروع ZeroMQ مع مارتن سوستريك، الذي كان مهندسه ومطوره الرئيسي حتى ديسمبر 2011.

في 30 مارس 2010، أعلن هينتجنس أن شركة iMatix (المصمم الأصلي لبروتوكول AMQP ) ستنسحب من مجموعة عمل AMQP ولن تدعم AMQP/1.0 لصالح ZeroMQ الأبسط والأسرع بشكل ملحوظ. [ 9 ] [ 10 ]

في عام 2011، كان مركز سيرن يبحث في سبل توحيد حلول البرمجيات الوسيطة المستخدمة لتشغيل مسرعات سيرن. قارنت دراسة سيرن بين تطبيقين مفتوحي المصدر لـ CORBA و Ice و Thrift وZeroMQ وYAMI4 و RTI و Qpid (AMQP) ، وحصل ZeroMQ على أعلى الدرجات ، ويعود ذلك جزئيًا إلى تنوعه، بما في ذلك سهولة تكييفه مع نظام التشغيل LynxOS .

في بداية عام 2012، قام اثنان من المطورين الأصليين بتطوير نسخة معدلة من ZeroMQ باسم Crossroads I/O. [ 12 ] [ 13 ] وقد بدأ مارتن سوستريك مشروع nanomsg، [ 14 ] وهو إعادة كتابة لمكتبة ZeroMQ الأساسية. [ 15 ]

في أغسطس 2012، أعلن دونغمين يو عن تحويله الكامل لـ ZeroMQ إلى لغة جافا، وأطلق عليه اسم JeroMQ. [ 16 ] وقد ألهم هذا الأمر تطوير نسخ أصلية كاملة أخرى من ZeroMQ، مثل NetMQ للغة C# [ 17 ] و zmq.rs للغة Rust. [ 18 ]

في مارس 2013، أعلن بيتر هينتجنس عن مسودة جديدة لبروتوكول ZMTP على مستوى الأسلاك، مما أدى إلى إضافة آليات أمان قابلة للتوسيع إلى ZeroMQ. [ 19 ] قام مارتن هورتون بتنفيذ آلية المصادقة والتشفير CurveZMQ [ 20 ] في المكتبة الأساسية بعد ذلك بوقت قصير.

في عام 2016، قام غاريت دامور، المطور المخضرم في ZeroMQ، بنسخ Nanomsg لإنشاء مشروع NNG (الجيل التالي من Nanomsg). [ 21 ]

عملية التطوير

يستخدم مجتمع ZeroMQ في الغالب عقد بناء الكود الجماعي (C4) [ 22 ] كعقد تطوير. يستلهم C4 من عمليات ويكيبيديا ونموذج التفرع وطلبات السحب في GitHub . ويركز على تسهيل مشاركة المساهمين الجدد وتقليل الاعتماد على المساهمين القدامى.

انظر أيضاً

مراجع

  1. "الإصدار 4.3.5" . 9 أكتوبر 2023. تم الاطلاع عليه بتاريخ 20 أكتوبر 2023 .
  2. "ترخيص ØMQ" . تم الاطلاع عليه بتاريخ 8 يونيو 2023 .
  3. "ابدأ" .
  4. "طبقة قابلية التوسع تصل إلى بنية الإنترنت" . مؤرشف من الأصل بتاريخ 28-05-2019 . تم الاطلاع عليه بتاريخ 04-09-2013 .
  5. "كيف يكون معدل نقل البيانات في ZeroMQ أعلى من TCP رغم أنه مبني على TCP؟" . الأسئلة الشائعة حول ZeroMQ . تم الاطلاع عليه بتاريخ 8 يونيو 2013 .
  6. 1 2 "اتجاهات البرمجيات الوسيطة وقادة السوق 2011" . تم الاطلاع عليه بتاريخ 8 يونيو 2013 .
  7. "بروتوكول نقل الرسائل ZeroMQ" . تم الاطلاع عليه بتاريخ 8 يونيو 2013 .
  8. "بحث GitHub: ZMTP" . GitHub . تم الاطلاع عليه بتاريخ 8 يونيو 2013 .
  9. «ستنهي iMatix دعم OpenAMQ بحلول عام 2011» . قائمة بريد openamq-dev. مؤرشف من الأصل بتاريخ 5 مارس 2016. تم الاطلاع عليه بتاريخ 5 سبتمبر 2018 .
  10. "ما هي مشكلة بروتوكول AMQP (وكيفية إصلاحها)" . شركة iMatix . تم الاطلاع عليه بتاريخ 14 يوليو 2012 .
  11. "Inspirel YAMI4" . تم الاطلاع عليه بتاريخ 14 يوليو 2012 .
  12. "ZeroMQ و Crossroads I/O: التنازل عن العلامات التجارية" . LWN.net . تم الاطلاع عليه بتاريخ 14 يوليو 2012 .
  13. "Crossroads I/O" . تم الاطلاع عليه بتاريخ 14 يوليو 2012 .
  14. "nanomsg" . تم الاطلاع عليه بتاريخ 8 يونيو 2013 .
  15. «لماذا كان عليّ كتابة ZeroMQ بلغة C بدلاً من C++؟» مؤرشف من الأصل بتاريخ 2016-02-04 . تم الاطلاع عليه بتاريخ 2015-06-20 .
  16. "jeromq - java pojo zeromq" . قائمة بريدية zeromq-dev. مؤرشفة من الأصل في 31 يوليو 2013. تم الاطلاع عليها في 23 مايو 2013 .
  17. "NetMQ" . GitHub . تم الاطلاع عليه بتاريخ 23 مايو 2013 .
  18. "zmq.rs" . GitHub . تم الاطلاع عليه بتاريخ 24 أكتوبر 2020 .
  19. "تأمين ZeroMQ: مسودة بروتوكول ZMTP الإصدار 3.0" . Hintjens.com . تم الاطلاع عليه بتاريخ 23 مايو 2013 .
  20. curvezmq.org
  21. ^ "NG: Nanomsg-NG" . nanomsg.org . تم الاسترجاع في 4 أغسطس 2023 .
  22. "عقد بناء الكود الجماعي (C4.1)" . وثائق طلب التعليقات (RFCs) الخاصة بـ ZeroMQ . تم الاطلاع عليه بتاريخ 23 مايو 2013 .