Table of Contents
إن نمط واحد من أنماط التصميم الأكثر اعترافاً في هندسة البرمجيات، الذي كثيراً ما يُدخل في مرحلة مبكرة من حياة المطور، ويكفل أن يكون للفصل درجة واحدة تماماً، ويوفر نقطة عالمية للوصول إلى هذه الحالة، وفي إطار تطبيقات موحدة، وفي تطبيقات مركبة واحدة، فإن هذا النمط يمثل أداة مباشرة لإدارة الموارد المشتركة مثل الأجسام التكوينية، وخدمات قطع الأشجار، أو مجموعات الاتصالات.
ما هو "سينغلتون باترن"؟
وقد حددها رسمياً فريق " الخط الرابع " في " البراءات المصممة: عناصر البرمجيات المتجهة نحو الأغراض القابلة للاستعمال " ، و " نمط " يُلاحظ أن طبقة ما لا توجد إلا حالة واحدة، ويوفر نقطة عالمية للوصول إليها " . ويُنفذ هذا النمط بصورة شائعة من خلال أسلوب ثابت يعيد الحالة، سواء كان قد ولد في مرحلة أولى من الحمل أو في بيئة متزامنة.
ويعالج نمط العنق في صميمه ثلاثة شواغل هي:
- Controlled access to a unique instance] - All code paths refer to the same object, eliminating the risk of multiple copies of critical state.
- Reduced namespace pollution] – -- Globalتغييرات are often discouraged, but a singleton offers a structured global point that can be managed and tested.
- Lazy initialization] - The instance is created only when needed, which can improve startup times in large applications.
وفي تطبيق هندسي موزع، تنطبق هذه المبادئ نفسها، ولكن نطاق " عالمي " هو الآن عملية أو كل عقد، فالوحدة الواحدة في مشهد جافا، مثلاً توفر حالة واحدة لكل خيوط في إطار هذا البرنامج، ولكن توجد حالات أخرى من هذا النوع من آليات الرصد المشترك، وهذا الفارق بالغ الأهمية: وجود هيكل أساسي واحد موزع على نطاق واسع، لا يوفر لنفسه أي تطابق.
استحقاقات دورية العنق في التطبيقات الهندسية الموزعة
وعندما يطبق نمط العنق داخل حدود عملية واحدة، يقدم عدة فوائد واضحة تصبح أكثر وضوحا عندما يكون النظام جزءا من هيكل موزع أوسع نطاقا، ويلي ذلك نتوسع في كل من المنافع بأمثلة ملموسة وبسياق هندسي.
1 - كفالة الاتساق في إطار عملية والحد من الدريفت
وفي تطبيق موزع، يدير كل عقد نسخته الخاصة من البرمجيات، وكثيرا ما يكون ذلك بحيز ذاكرته الخاص بها، ويقلل كل عنصر من عناصر نفس النموذج من نفس الشكل من العناصر، ويحد من قيم قواعد البيانات، وأعلام المعالم، ونقاط نهاية الخدمة - التي يمكن أن تصبح غير متسقة بسهولة إذا كانت كل وحدة من الوحدات تحمل نسختها الخاصة بها، وينظر كل عنصر من العناصر المكونة لنفس العقد إلى نفس الجسم التكوين، وإذا تم تحديث التشكيلة في وقتها )مثل القيم المتحركة( فإن كل شيء جديد " يوضع في وقت واحد " .
(أ) النظر في خدمات صغيرة تربط مجموعة من نماذج قاعدة البيانات، ويدير فريق الاتصال بين (فردتون) المجمع عبر جميع الخيوط التي تعالج الطلبات، وبدون شركة (أوغنتون)، قد ينشئ كل من معالجي الطلبات مجمعاً خاصاً به، مما يؤدي إلى وجود وصلات مفرطة، وينعكس اتجاهه بشكل غير متسق في المقام الأول، ويضع نظام إدارة المجمع المركزي، ويستطيع، عند الجمع بينه وبين آلية فحص صحي، أن يفشل بشكل معقول في تكرار آخر دون أن يكشف كل من دون وجود قراءة.
2 - تخفيض استخدام الموارد عن طريق القضاء على الإدمان
ويزيد من التكلفة في إنشاء عدة حالات من الأجسام الثقيلة الوزن، ويزيد من قيمة النسيج في كل نظام موزع، ويمنع كل جهاز إضافي من كل عقدة من العداد الازدواج المهدر للأجسام مثل الشطرنج المشتركة، أو جامعي المقاييس، أو عملاء منافذ التنفيذ عن بعد.
فعلى سبيل المثال، ينبغي أن تكون دائرة تجميع القياسات التي تجمع وتصدر بيانات الأداء إلى نظام للرصد (مثل بروميثيوس أو نظام البيانات) بمثابة شركة " سينغلتون " لكل عملية، وإذا قام كل عنصر بتأجيل مراسله الخاص، فإن النظام سيولد حركة مرورية زائدة، وربما يحمّل ظهر الرصد، ويكفل شركة " سينغلتون " وجود أداة واحدة فقط من أجهزة الإبلاغ، تستخدم فيها بيئة متينية لإرسال الحاويات.
3 - تبسيط التواؤم وإدارة العملات
وفي إطار عملية واحدة، يمكن أن تكون إحدى الوحدات المشتركة بمثابة نقطة تزامن طبيعية، ويمكن أن تتزامن طرق التوحيد بين العنبر من أجل حماية الدولة المطمورة المشتركة، وفي حين أن هذا نمط مفهوم جيدا في البرمجة المتعددة المستويات، فإنه يصبح أكثر قيمة في النظم الموزعة التي يمكن أن تكون فيها الخيوط المتعددة مناولة الطلبات التي يجب أن تنسق الوصول إلى مورد مشترك، مثل خبز محلي أو حد أقصى للمعدلات.
(ب) النظر في الحد الأقصى للمعدل الموزع الذي ينفذ باستخدام دلو منفردتون مكسيكي، ويحتفظ كل عقد بديهته الخاصة، ويكفل العنبر الواحد أن تكون جميع الخيوط على ذلك العقد متقاسمة مع نفس العدد المكسور، ويقلل مستوى النبتة من المنازعة على خدمة الحد من السعر المركزي (التي ستصبح اختناقات) بينما لا يزال يوفر استخداماً عادلاً في جميع المجموعات عندما يقترن بتزامن دوري.
4- تعزيز القدرة على الاستمرار عن طريق المركزية في التغيير
وعندما يدير شركة " سينغلتون " شاغلاً شاملاً مثل قطع الأشجار أو مراجعة الحسابات أو التشكيل، فإن جميع التغييرات في هذا الاهتمام تُدرج في فئة " سينغلتون " ، ويعني ذلك في تطبيق موزع أن تحديث استمارة قطع الأشجار، أو إضافة حقل جديد لمراجعة الحسابات، أو تغيير طريقة تحميل التشكيل يتطلب تغييرات في مكان واحد لكل خدمة، ثم ينشر على جميع الخيوط التي تستخدم تلك الخدمة.
فعلى سبيل المثال، يمكن تعديل جهاز تعقب عالمي يولد بطاقات هوية فريدة من نوعها للحصول على الطلبات بحيث يشمل بطاقة جديدة لنسخة النشر، وكل عنصر يحصل على هويته التعقبية من شركة سينغلتون يستفيد فورا من التغيير، وبدون شركة سينغلتون، سيتعين على المهندسين أن يصطادوا كل مكان يُعطي الأولوية لمولد الهوية، مما يؤدي إلى عدم التحديثات وعدم الاتساق عبر الأثر الموزع.
وعلاوة على ذلك، فإن إضفاء الطابع المركزي على المهام التنفيذية يبسط، فإذا كان القصد من نظام " سينغلتون " هو دعم الإغلاق الحسن أو إعادة التشكيل (مثل إغلاق وصلات قواعد البيانات القديمة)، فإن النظام يمكن أن يسلك طريقة واحدة على السفينة " سينغلتون " أثناء عملية الخفض المسيل للدموع بدلا من تكرار أكثر من عشرات الأشياء.
اعتبارات التنفيذ المتعلقة بالنظم الموزعة
وفي حين أن الفوائد قاهرة، فإن تنفيذ نظام " سينغلتون " في تطبيق هندسي موزع يتطلب اهتماماً دقيقاً للعديد من التحديات المعمارية والتصميمية، ويمكن أن يؤدي إغراق هذه التحديات إلى مسائل حادة مثل فساد البيانات، أو السلوك غير المتوقع، أو التجاوزات على نطاق المنظومة.
Per-Process sington vs. True Distributed singleton
ومعظم عمليات تنفيذ نمط " سينغلتون " تقتصر على عملية واحدة (أو عملية واحدة من طراز JVM، و CLR، وما إلى ذلك) وهذا أمر مقبول تماماً ويوصى به بالنسبة للموارد المحلية لكل عقد: مدير لقطع الأخشاب في كل عملية، أو خصلة محلية في الذاكرة، أو ملف تجميعي، ولكن عندما يكون الهدف هو أن يكون هناك بالضبط حالة واحدة من الحالات التي تعتمد فيها على كل فئة من مؤشرات البرمجة العالمية، أو على سبيل المثال:
ويتمثل النهج المشترك في استخدام انتخاب الزعيم: يحاول كل عقدة الحصول على قفل موزع أو يصبح " القائد " ، وينشئ الرئيس وحده؛ أما النوايا الأخرى فيتصرف كطلاب أو طلبات مقدمة إلى الزعيم، وإذا فشل الزعيم، فإن هناك شعارا آخر يتولي منصبه وينشئ حالة جديدة، وهذا النمط يضمن أن يكون هناك في أي لحظة سوى عقد واحد من الأعضاء في حزب واحد منفرد، وهو يقدم إلى درجة من التعقيد.
السلامة والتكرار داخل العقد
وحتى في إطار عملية واحدة، فإن السلامة في الخياطة هي في غاية الأهمية، إذ تستخدم تقنيات مثبتة مثل اليونيتون المبني على سطح الأرض (في جافا)، أو مبني ثابت (في C#)، أو مبيد كسول من الكسور المزود بقفل مزدوج، وفي النظم الموزعة، يمكن أيضا الوصول إلى النجمة العازلة من الخيوط المتعددة التي تتعامل مع البيانات غير المطابقة للكلمات، وذلك باستخدام أجهزة اتصال غير مقفلة.
معالجة تحديثات التجمعات
فالتسويق الذي يديره أحد أفراد اليونيغل كثيرا ما يحتاج إلى إعادة تجديد في وقت غير مناسب دون إعادة تشغيل الخدمة، ويمكن أن يشارك في تنظيم أحداث تغيير (مثلا من متجر موزع مثل محل الربيع كلود كونج أو ما إلى ذلك)، وعندما يحدث تغيير، يقوم العنبر بمسح تمثيله الداخلي بذرة الذروة، بينما يواصل جميع القراء رؤية سباق متناغم متماسك، وهذا هو نمط متقدم يجب تنفيذه بسرعة مع الجسم غير المستقر.
الاختبار والسخرة
ويصعب اختبار العوالق بشكل ملحوظ لأنها تستحدث معالين خفية ودولة عالمية، وفي تطبيق موزع، تتفاقم المشكلة لأن العنبر الواحد قد يعتمد على الخدمات الخارجية )مثل مجموعة قواعد البيانات أو دائرة تنسيق عن بعد( وللتخفيف من ذلك، تصميم اليونيغلتون لقبول مصنع قابل للتشكيل أو مقدم خدمات عن طريق الإعالة إذا أمكن، حتى إذا كان الاختبار عن طريق " الاختبارات " محملة بصورة حقيقية.
الأشغال الموزعة وضمان " المصعد "
إذا كنت بحاجة حقا إلى حالة واحدة من فئة عبر جميع النوافذ، يجب أن تستخدم قفل موزع يُفرض الاستبعاد المتبادل، ويستخدم التنفيذ النموذجي خدمة قفل (مثلا، ريديس ريدلوك، وزوكو بيبر، وميدالية الجو) لضمان أن يكون هناك عقد واحد فقط يمكن أن يخلق الحالة، وأن يحاول تنفيذ نظام " سينغل " الحصول على القفل؛ وإذا نجح، فإنه يخلق الامتحانات الاحتياطية؛
غير أنه ينبغي إدراك نظرية برنامج العمل الموحد: ففي وجود تقسيم للشبكة، لا يمكن أن يضمن القفل الموزع في آن واحد الاتساق والتوافر، ومن الضروري فهم مدى تسامح تطبيقكم إزاء عدم الاتساق، وبالنسبة للعديد من التطبيقات الهندسية، فإن الجمع بين كل من المجهزين بالشبكة الواحدة والاتساق النهائي عبر الاستفسارات عن الرسائل أو أنواع البيانات المستنسخة بدون نزاعات أكثر عملية من فرض نظام عالمي صارم.
البدائل والنماذج التكميلية
ولا يشكل نمط العازبون الوحيد أداة للحفاظ على الدولة المتسقة في النظم الموزعة، وفي كثير من الحالات، تتجنب البنيانات الحديثة عمداً العازبات العالمية لتحسين القابلية للتكرار والعزلة الخاطئة، كما أن البدائل والأنماط العديدة التي يمكن أن تكمل أو تحل محل العنق.
حاويات الحقن المعلَّقة
وتوفر أطر مثل الربيع )جوافا( أو غيس فاصولياء واسعة النطاق )مجال سنغلتون( توفر نفس الفريد من نوع العملية الواحدة ولكن بدون الطريقة العالمية ]FLT:1][ الثابتة، وهذا يشجع على الاستعارة الصريحة للمعالين ويسهل الاختبار لأن من الممكن إنشاء حالة جديدة لكل اختبار، وفي سياق الخدمات الصغرى، يمكن لكل خدمة أن يكون لها حاوية خاصة بها في الحقن، و " الخدمات " .
الخدمات الحكومية
ولا تسمح الخدمة عديمة الجنسية بأي غرض منفرد يحمل الدولة عبر الطلبات، بل تخزن جميع الدول خارجياً: في قاعدة بيانات، أو مقهى موزع (مثل ريديس) أو مجهز للتدفق (مثل أباتشي كاتفكا)، بل إن كل طلب ينطوي على تصميم أفقي لا مبرر له (مثل الحاجة إلى عقد دورة).
أنماط إدارة الدولة الموزعة
عند الاقتضاء، النظر في الأنماط المصممة خصيصاً للنظم الموزعة، عند وجود ولاية متسقة عبر العقد:
- ] ] - لمراقبة موثوقة لمورد، على النحو المبين سابقا.
- Quorum / consensus] - استخدام الخوارزميات مثل ربيع أو فاكسوس (عن طريق خدمات مثل الخد، القنصل) للاتفاق على قيمة واحدة.
- Event Sourcing] - Every change to state is recorded as an event in an immutable log. Services can rebuild their singleton state by replaying events, ensuring consistency without a live in-memory singleton.
- Distributed Cache] - A cache like Redis can hold a single copy of formation that all services read, effectively acting as a global singleton object.
وكثيرا ما توفر هذه الأنماط ضمانات أقوى من مجرد نظام واحد، وهي أفضل ملاءمة للتطبيقات الهندسية الموزعة على البعثات.
حالات الاستخدام الحقيقي في العالم والمبادلات
وللاستناد إلى المناقشة، النظر في سيناريوهين متناقضين:
1 - خط أنابيب لتجهيز البيانات واسع النطاق. يستخدم كل عقدة عمالة واحدة لإدارة مجموعة من وصلات قواعد البيانات، وتجمعها محلي في العقد، لذا فإن شركة " Uncess sington " تبسط إدارة الموارد وتمنع تسرب الاتصالات، وهذا استخدام آمن وفعال للنمط.
Case 2: A distributed lock manager for a manufacturing control system.] Multiple machines need to agree on which piece of equipment is active and Using a singleton pattern per process would fail, because each process would have its own “authoritative” instance. Here, a distributed singleton implemented via ZooKeeper is necessary, but it introduces latency and consistency.
وتوضح هذه الأمثلة أن نمط النمط غير جيد أو سيئ على الصعيد العالمي؛ وتتوقف ملاءمته على نطاق " حالة واحدة " ] في عملية ما، فهو أداة مثبتة وبسيطة، ويتطلب، عبر العمليات، تنسيقاً موزعاً وتصميماً دقيقاً.]
خاتمة
ولا يزال نمط العنبر الوحيد أداة تصميم قيمة لضمان وجود دولة متسقة في التطبيقات الهندسية الموزعة، شريطة أن يكون مفهوماً صحيحاً، وأن تبسط العمليات الواحدة إدارة الموارد، وتخفض النفقات العامة للذاكرة، وتبسّط جميع العوامل الحاسمة لمراقبة التطابق في الهياكل الحديثة للحاويات والخدمات الصغيرة، وهي مثالية لمديري التشكيلات، وخدمات قطع الأشجار، ومجمعات الاتصالات، وصناديق الإمداد التي يجب أن تكون متسقة على الصعيد العالمي، ولكنها لا تحتاج إلى ذلك.
وبالنسبة للسيناريوهات التي تتطلب حالة واحدة عبر نظام موزع، يجب توسيع نطاق نمط العنبر الواحد بأدوات تنسيق موزعة مثل انتخاب الزعيم أو الأقفال الموزعة أو بروتوكولات توافق الآراء، وفي هذه الحالات، يكون الجهد الهندسي أعلى، كما أن البدائل مثل التصميم عديم الجنسية أو مصادر الأحداث أو المخابئ الموزعة يمكن أن توفر قدرة أفضل على التصعيد والقدرة على التكيف، وفي نهاية المطاف، يكون نمط واحد من الوسائل التي تستخدمها الدولة غير متماسكة.