BlogPic

بروتوكول MQTT، هو بروتوكول ثُنائي خفيف الوزن وذو تكلفة قليلة عند نقل حزم البيانات عبر الشبكة مقارنةً ببروتوكولات أخرى مثل (Hyper Text Transfer Protocol). فهو سهل للغاية في التنفيذ على جانب العميل (Client)، حيث كانت سهولة الاستخدام هي السبب الرئيسي لتطويره، والتي تجعله مناسبًا تمامًا للأجهزة المقيدة ذات الموارد المحدودة في وقتنا الحاضر.

يُشير الإختصار (MQTT) إلى المصطلح (Message Queuing Telemetry Transport)، والذي تم اختراعه في العام 1999 من قبل آندي ستانفورد كلارك من شركة (IBM) وأرلين نيبر من شركة (Arcom)، حيث كانا في حاجة إلى بروتوكول يتسم بالعمل في ظروف خاصة مثل الإستهلاك المنخفض للبطارية وعرض نطاق ترددي بسيط للإتصال بأنابيب النفط عبر الأقمار الصناعية. حدد المخترعان الاثنان عدة متطلبات للبروتوكول المستقبلي وهي كالتالي:

  1. تنفيذ بسيط.
  2. توصيل البيانات بجودة عالية.
  3. خفيف الوزن وفعال في استخدام عرض النطاق الترددي.
  4. لا يتعلق بنوعية بيانات محددة.
  5. مناسب للأجهزة ذات عمر بطارية قصير.

لا تزال هذه الأهداف هي جوهر بروتوكول (MQTT). ومع ذلك، فقد تغير التركيز الأساسي للبروتوكول من أنظمة الإدماج الخاصة إلى حالات استخدام انترنت الأشياء (Internet of Things). هذا التحول في التركيز أدى إلى الكثير من الارتباك حول ما يعنيه اختصار (MQTT)، والإجابة المختصرة هي أن (MQTT) لم يعد اختصارًا، بل هو ببساطة اسم البروتوكول.

اقرأ أيضا: انترنت الأشياء: ما هي وكيف تعمل؟

يوفر نمط النشر / الإشتراك (Publish / Subscribe) والمعروف أيضًا باسم (pub/sub) بديلاً لنمط العميل / الخادم (Client / Server) التقليدي. ففي نمط العميل / الخادم يتواصل العميل مباشرةً مع نقطة النهاية. بينما يفصل نمط النشر / الإشتراك العميل الذي يرسل رسالة (الناشر) عن العميل أو العملاء الذين يستقبلون الرسائل (المشتركون). في الواقع، لا يتواصل الناشرون والمشتركون مباشرةً مع بعضهم البعض، فهم لا يعلمون حتى بوجود بعضهم البعض. ويتم التعامل بينهما عن طريق مكون ثالث يُدعى (Broker) والذي يعمل على تصفية جميع الرسائل الواردة وتوزيعها بشكل صحيح على المشتركين.

هيكلية نمط النشر / الإشتراك (Publish / Subscribe) لبروتوكول MQTT

يتسم النمط (النشر / الإشتراك) بإزالة التواصل المباشر بين الناشر للرسالة والمستلم أو المشترك. ويتيح نشاط التصفية الذي يقوم به ال (Broker) التحكم في أي العملاء أو المشتركين الذي سيستقبل أي رسالة. حيث يتم تفكيك الإتصال (Decoupling) في هذا النمط بالإعتماد على ثلاثة أبعاد هي: الفضاء، الوقت، والتزامن:

  • تفكيك الفضاء (Space Decoupling): الناشر والمشترك لا يحتاجان إلى معرفة بعضهما البعض (مثلاً، لا يتم تبادل عنوان IP والمنفذ).
  • تفكيك الوقت (Time Decoupling): الناشر والمشترك ليس عليهما أن يعملا في نفس الوقت.
  • تفكيك التزامن (Synchronization Decoupling): العمليات على كل من العنصرين لا تحتاج إلى أن تتوقف أثناء النشر أو الاستقبال.

MQTT

يتمتع نمط (النشر / الإشتراك) بقدرة توسع أفضل من النمط التقليدي (العميل / الخادم) ويرجع ذلك إلى أن العمليات على ال (Broker) يمكن موازاتها بشكل كبير كما يمكن معالجة الرسائل بطريقة تعتمد على الأحداث. تخزين الرسائل المؤقتة وتوجيهها بشكل ذكي هي عوامل حاسمة في تحسين القدرة على التوسع. ومع ذلك، فإن التوسع للوصول إلى ملايين الإتصالات يُشكل تحديًا كبيراً. كما يمكن تحقيق هذا المستوى العالي من الاتصالات من خلال وجود عُقد من ال (Brokers) المتجمعة لتوزيع الحمل على عدد أكبر من الخوادم الفردية باستخدام موازنة الحمل (Load Balancers).

تصفية الرسائل

يلعب ال (Broker) دورًا حاسمًا في عملية النشر / الاشتراك. حيث تتوفر عدة خيارات للتصفية هي التي تُدير عملية تصفية جميع الرسائل بحيث يتلقى كل مشترك فقط الرسائل الخاصة به.

الخيار الأول: التصفية بناءً على الموضوع

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

الخيار الثاني: التصفية بناءً على المحتوى

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

الخيار الثالث: التصفية بناءً على النوع

عند استخدام لغات البرمجة الموجهة نحو الكائنات، فإن التصفية بناءً على نوع / فئة الرسالة (الحدث) هي ممارسة شائعة. على سبيل المثال، يمكن للمشترك أن يستمع إلى جميع الرسائل التي تكون من نوع استثناء (exception) أو أي نوع فرعي آخر (sub-type).

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

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

المراجع:

  1. https://mqtt.org/
  2. https://www.hivemq.com/

اترك رد

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *