نمط النشر والاشتراك
تحتاج هذه المقالة إلى مصادر إضافية للتحقق . ( مارس 2010 ) |
في هندسة البرمجيات ، يعد النشر والاشتراك نمطًا للمراسلة حيث يصنف الناشرون الرسائل إلى فئات يتلقاها المشتركون. وهذا يتناقض مع نموذج نمط المراسلة النموذجي حيث يرسل الناشرون الرسائل مباشرة إلى المشتركين.
وبالمثل، يعرب المشتركون عن اهتمامهم بفئة واحدة أو أكثر ويتلقون فقط الرسائل التي تهمهم، دون معرفة الناشرين، إن وجدوا.
يُعد النشر والاشتراك شقيقًا لنموذج قائمة انتظار الرسائل ، وهو عادةً جزء من نظام وسيط أكبر موجه للرسائل . تدعم معظم أنظمة المراسلة كلًا من نموذجي النشر والاشتراك وقائمة انتظار الرسائل في واجهة برمجة التطبيقات الخاصة بها ؛ على سبيل المثال، خدمة الرسائل في Java (JMS).
يوفر هذا النمط قابلية أكبر للتوسع في الشبكة وطوبولوجيا شبكة أكثر ديناميكية ، مما يؤدي إلى انخفاض المرونة في تعديل الناشر وبنية البيانات المنشورة. وفقًا لجريجور هوبه، بالمقارنة مع أنماط المراسلة المتزامنة (مثل RPC ) وأنماط المراسلة من نقطة إلى نقطة ، يوفر النشر والاشتراك أعلى مستوى من الفصل بين المكونات المعمارية، ومع ذلك، يمكنه أيضًا ربطها ببعض الطرق الأخرى (مثل التنسيق والاقتران الدلالي) بحيث تصبح فوضوية بمرور الوقت. [1]
تصفية الرسائل
لا يستشهد هذا القسم بأي مصادر . ( يونيو 2023 ) |
في نموذج النشر والاشتراك، يتلقى المشتركون عادةً مجموعة فرعية فقط من إجمالي الرسائل المنشورة. وتسمى عملية اختيار الرسائل للاستلام والمعالجة بالتصفية . وهناك شكلان شائعان للتصفية: تصفية على أساس الموضوع وتصفية على أساس المحتوى.
في النظام القائم على المواضيع ، يتم نشر الرسائل في "مواضيع" أو قنوات منطقية مسماة. سيتلقى المشتركون في النظام القائم على المواضيع جميع الرسائل المنشورة في المواضيع التي يشتركون فيها. الناشر مسؤول عن تحديد المواضيع التي يمكن للمشتركين الاشتراك فيها.
في النظام القائم على المحتوى ، لا يتم تسليم الرسائل إلى المشترك إلا إذا كانت سمات أو محتوى تلك الرسائل تتطابق مع القيود التي حددها المشترك. المشترك مسؤول عن تصنيف الرسائل.
تدعم بعض الأنظمة مزيجًا من الاثنين؛ حيث ينشر الناشرون رسائل حول موضوع ما بينما يقوم المشتركون بتسجيل اشتراكات تعتمد على المحتوى لموضوع واحد أو أكثر.
الطوبولوجيات
في العديد من أنظمة النشر والاشتراك، ينشر الناشرون الرسائل إلى وسيط رسائل أو ناقل أحداث ، ويسجل المشتركون اشتراكاتهم لدى هذا الوسيط، مما يسمح للوسيط بإجراء عملية التصفية. يقوم الوسيط عادةً بأداء وظيفة التخزين والتوجيه لتوجيه الرسائل من الناشرين إلى المشتركين. بالإضافة إلى ذلك، قد يعطي الوسيط الأولوية للرسائل في قائمة الانتظار قبل التوجيه. [ بحاجة لمصدر ]
يمكن للمشتركين التسجيل للحصول على رسائل محددة في وقت البناء أو وقت التهيئة أو وقت التشغيل. في أنظمة واجهة المستخدم الرسومية، يمكن برمجة المشتركين للتعامل مع أوامر المستخدم (على سبيل المثال، النقر فوق زر)، وهو ما يتوافق مع التسجيل في وقت البناء. تستخدم بعض الأطر ومنتجات البرامج ملفات تكوين XML لتسجيل المشتركين. تتم قراءة ملفات التكوين هذه في وقت التهيئة. البديل الأكثر تطورًا هو عندما يمكن إضافة المشتركين أو إزالتهم في وقت التشغيل. يتم استخدام هذا النهج الأخير، على سبيل المثال، في مشغلات قاعدة البيانات وقوائم البريد و RSS . [ بحاجة لمصدر ]
لا يستخدم برنامج الوسيط لخدمة توزيع البيانات (DDS) وسيطًا في المنتصف. بدلاً من ذلك، يشارك كل ناشر ومشترك في نظام النشر/الاشتراك البيانات الوصفية عن بعضهم البعض عبر البث المتعدد IP . يخزن الناشر والمشتركون هذه المعلومات محليًا ويوجهون الرسائل بناءً على اكتشاف بعضهم البعض في الإدراك المشترك. في الواقع، تتطلب بنيات عدم وجود وسيط نظام نشر/اشتراك لبناء شبكة تراكب تسمح بالتوجيه اللامركزي الفعال من الناشرين إلى المشتركين. وقد أظهر جون كلاينبيرج أن التوجيه اللامركزي الفعال يتطلب طوبولوجيات العالم الصغير القابلة للملاحة . وعادةً ما يتم تنفيذ طوبولوجيات العالم الصغير هذه بواسطة أنظمة نشر/اشتراك لامركزية أو اتحادية. [2] تعمل أنظمة النشر/الاشتراك التي تدرك الموقع [3] على بناء طوبولوجيات العالم الصغير التي توجه الاشتراكات عبر روابط قصيرة المسافة ومنخفضة التكلفة وبالتالي تقليل أوقات تسليم الاشتراك.
تاريخ
كان أحد أقدم أنظمة النشر والاشتراك الموصوفة علنًا هو نظام "الأخبار" الفرعي لمجموعة أدوات Isis، والذي تم وصفه في مؤتمر ندوة جمعية آلات الحوسبة (ACM) حول مبادئ أنظمة التشغيل (SOSP '87) عام 1987، في ورقة بحثية بعنوان "استغلال المزامنة الافتراضية في الأنظمة الموزعة . 123–138." [4]
المزايا
لا يستشهد هذا القسم بأي مصادر . ( يونيو 2023 ) |
اقتران فضفاض
يرتبط الناشرون بشكل فضفاض بالمشتركين، ولا يحتاجون حتى إلى معرفة وجودهم. نظرًا لأن الموضوع هو المحور، يُسمح للناشرين والمشتركين بالبقاء جاهلين بطوبولوجيا النظام. يمكن لكل منهما الاستمرار في العمل بشكل طبيعي بشكل مستقل عن الآخر. في نموذج العميل والخادم المقترن بإحكام التقليدي ، لا يمكن للعميل نشر الرسائل على الخادم أثناء عدم تشغيل عملية الخادم، ولا يمكن للخادم تلقي الرسائل إلا إذا كان العميل قيد التشغيل. تفصل العديد من أنظمة النشر/الاشتراك ليس فقط مواقع الناشرين والمشتركين ولكن أيضًا تفصلهم زمنيًا. إحدى الاستراتيجيات الشائعة التي يستخدمها محللو البرامج الوسيطة مع أنظمة النشر/الاشتراك هذه هي إسقاط ناشر للسماح للمشترك بالعمل من خلال المتراكم (شكل من أشكال خنق النطاق الترددي ).
قابلية التوسع
يوفر Pub/sub فرصة لإمكانية التوسع بشكل أفضل من العميل والخادم التقليدي، من خلال التشغيل المتوازي، وتخزين الرسائل، والتوجيه القائم على الشجرة أو الشبكة، وما إلى ذلك. ومع ذلك، في أنواع معينة من بيئات المؤسسات ذات الحجم الكبير والمترابطة بإحكام، مع توسع الأنظمة لتصبح مراكز بيانات مع آلاف الخوادم التي تشترك في البنية الأساسية لـ Pub/sub، غالبًا ما تفقد أنظمة البائعين الحالية هذه الميزة؛ إن إمكانية التوسع لمنتجات Pub/sub تحت الحمل العالي في هذه السياقات تشكل تحديًا بحثيًا.
من ناحية أخرى، خارج بيئة المؤسسات، أثبت نموذج النشر/الاشتراك قابليته للتوسع إلى أحجام تتجاوز بكثير تلك التي يحتاجها مركز بيانات واحد، حيث يوفر رسائل موزعة على مستوى الإنترنت من خلال بروتوكولات النشر عبر الويب مثل RSS و Atom . تقبل بروتوكولات النشر هذه زمن انتقال أعلى ونقصًا في ضمانات التسليم في مقابل قدرة حتى خادم الويب منخفض المستوى على نشر الرسائل إلى (ربما) ملايين من عقد المشتركين المنفصلة.
مشاكل تسليم الرسائل
- يمكن للمشتركين المكررين في نظام النشر/الاشتراك أن يساعدوا في ضمان توصيل الرسائل بأقل قدر من التعقيد الإضافي. على سبيل المثال، قد يستخدم مصنع نظام النشر/الاشتراك حيث يمكن للمعدات نشر المشكلات أو الأعطال إلى مشترك يعرض هذه المشكلات ويسجلها. إذا فشل المسجل (تعطل)، فلن يتلقى ناشرو مشكلات المعدات بالضرورة إشعارًا بفشل المسجل، ولن يتم عرض رسائل الخطأ أو تسجيلها بواسطة أي جهاز على نظام النشر/الاشتراك. في نظام العميل/الخادم، عندما يفشل مسجل الأخطاء، سيتلقى النظام إشارة إلى فشل مسجل الأخطاء (الخادم). ومع ذلك، سيتعين على نظام العميل/الخادم التعامل مع هذا الفشل من خلال توفير خوادم تسجيل مكررة على الإنترنت، أو من خلال إنشاء خوادم تسجيل احتياطية بشكل ديناميكي. وهذا يضيف تعقيدًا إلى تصميمات العميل والخادم، وكذلك إلى بنية العميل/الخادم ككل. في نظام النشر/الاشتراك، يمكن إضافة مشتركي تسجيل زائدين عن الحاجة، وهم نسخ طبق الأصل من المسجل الحالي، إلى النظام لزيادة موثوقية التسجيل دون أي تأثير على أي جهاز آخر في النظام. يمكن أيضًا إضافة ميزة تسجيل رسائل الخطأ المؤكدة بشكل تدريجي، بعد تنفيذ الوظيفة الأساسية لتسجيل رسائل مشكلة الجهاز.
العيوب
لا يستشهد هذا القسم بأي مصادر . ( يونيو 2023 ) |
إن المشاكل الأكثر خطورة التي تعاني منها أنظمة النشر والاشتراك هي نتيجة جانبية لميزتها الرئيسية: فصل الناشر عن المشترك.
مشاكل تسليم الرسائل
يجب تصميم نظام النشر/الاشتراك بعناية ليكون قادرًا على توفير خصائص نظام أقوى قد يتطلبها تطبيق معين، مثل التسليم المضمون.
- قد يكون الوسيط في نظام النشر/الاشتراك مصممًا لتوصيل الرسائل لفترة زمنية محددة، ثم يتوقف بعد ذلك عن محاولة التوصيل، سواء تلقى تأكيدًا بنجاح استلام الرسالة من قبل جميع المشتركين أم لا. لا يمكن لنظام النشر/الاشتراك المصمم بهذه الطريقة ضمان توصيل الرسائل إلى أي تطبيقات قد تتطلب مثل هذا التسليم المؤكد. يجب فرض اقتران أكثر إحكامًا بين تصميمات مثل هذا الزوج من الناشر والمشترك خارج بنية النشر/الاشتراك لإنجاز هذا التسليم المؤكد (على سبيل المثال عن طريق مطالبة المشترك بنشر رسائل الاستلام).
- قد يفترض الناشر في نظام النشر/الاشتراك أن المشترك يستمع، بينما في الواقع ليس كذلك.
يتكيف نمط النشر/الاشتراك بشكل جيد مع الشبكات الصغيرة ذات العدد الصغير من عقد الناشرين والمشتركين وحجم الرسائل المنخفض. ومع ذلك، مع نمو عدد العقد والرسائل، تزداد احتمالية عدم الاستقرار، مما يحد من أقصى قابلية للتوسع لشبكة النشر/الاشتراك. تشمل أمثلة عدم استقرار الإنتاجية على نطاقات كبيرة ما يلي:
- طفرات التحميل - الفترات التي تشبع فيها طلبات المشتركين معدل نقل البيانات في الشبكة تليها فترات من انخفاض حجم الرسائل (نطاق ترددي للشبكة غير مستغل بالكامل)
- التباطؤات - مع زيادة عدد التطبيقات التي تستخدم النظام (حتى إذا كانت تتواصل على قنوات نشر/اشتراك منفصلة)، فإن تدفق حجم الرسائل إلى مشترك فردي سوف يتباطأ
بالنسبة لأنظمة النشر/الاشتراك التي تستخدم وسطاء (خوادم)، فإن الحجة التي تجعل الوسطاء يرسلون رسائل إلى المشتركين تكون داخل النطاق ، وقد تكون عرضة لمشاكل أمنية. قد يتم خداع الوسطاء لإرسال إشعارات إلى العميل الخطأ، مما يؤدي إلى تضخيم طلبات رفض الخدمة ضد العميل. قد يتعرض الوسطاء أنفسهم لأعباء زائدة حيث يقومون بتخصيص الموارد لتتبع الاشتراكات التي تم إنشاؤها.
حتى مع الأنظمة التي لا تعتمد على الوسطاء، قد يتمكن المشترك من تلقي بيانات غير مصرح له باستلامها. وقد يتمكن الناشر غير المصرح له من إدخال رسائل غير صحيحة أو ضارة في نظام النشر/الاشتراك. وينطبق هذا بشكل خاص على الأنظمة التي تبث رسائلها أو تبثها بشكل متعدد . يمكن للتشفير (مثل أمان طبقة النقل (SSL/TLS)) منع الوصول غير المصرح به، لكنه لا يمكنه منع إدخال الرسائل الضارة من قبل الناشرين المصرح لهم. كما أن البنيات الأخرى بخلاف النشر/الاشتراك، مثل أنظمة العميل/الخادم، معرضة أيضًا لمرسلي الرسائل المصرح لهم الذين يتصرفون بشكل ضار.
انظر أيضا
- Atom ، بروتوكول آخر لتوزيع الويب عالي القدرة على التوسع
- خدمة توزيع البيانات (DDS)
- البرمجة الموجهة بالأحداث
- هندسة معمارية عالية المستوى
- بروتوكول إدارة مجموعة الإنترنت (IGMP)
- وسطاء الرسائل
- قائمة الرسائل
- نمط المراقب
- مشكلة المنتج والمستهلك
- تكنولوجيا الدفع [2]
- RSS ، وهو بروتوكول توزيع ويب قابل للتطوير بدرجة كبيرة
- يوزنت
- WebSub ، تنفيذ لـ pub/sub
مراجع
- ^ Hohpe, Gregor (2003). Enterprise Integration Patterns: Designing, Building, and Deploying Messaging Solutions . Addison-Wesley Professional. ISBN 978-0321200686.
- ^ ab Chen, Chen; Tock, Yoav; Girdzijauskas, Sarunas (2018). "BeaConvey". وقائع المؤتمر الدولي الثاني عشر لـ ACM حول الأنظمة الموزعة والقائمة على الأحداث. هاملتون، نيوزيلندا: ACM Press. ص. 64-75. doi :10.1145/3210284.3210287. ISBN 9781450357821. S2CID 43929719.
- ^ رحيميان، فاطمة؛ لي نجوين هوو، ثينه؛ جيردزيجوسكا، ساروناس (2012)، جوشكا، كارل مايكل؛ هاريدي، سيف (المحررون)، "وعي الموقع في شبكة النشر/الاشتراك من نظير إلى نظير"، التطبيقات الموزعة والأنظمة القابلة للتشغيل المتبادل ، المجلد 7272، سبرينغر برلين هايدلبرغ، ص 45-58، doi : 10.1007/978-3-642-30823-9_4 ، ISBN 9783642308222
- ^ Birman, K.; Joseph, T. (1987). "استغلال التزامن الافتراضي في الأنظمة الموزعة". وقائع ندوة ACM الحادية عشرة حول مبادئ أنظمة التشغيل - SOSP '87 . ص 123-138. doi :10.1145/41457.37515. ISBN 089791242X. S2CID 7739589.
