مدير الأقفال الموزعة

يعمل مدير الأقفال الموزع ( DLM ) على كل جهاز في المجموعة، بنسخة متطابقة من قاعدة بيانات الأقفال على مستوى المجموعة. تستخدم أنظمة التشغيل مديري الأقفال لتنظيم وتسلسل الوصول إلى الموارد. وبهذه الطريقة، يوفر مدير الأقفال الموزع للتطبيقات البرمجية الموزعة عبر المجموعة على أجهزة متعددة وسيلة لمزامنة وصولها إلى الموارد المشتركة .

استُخدمت وحدات إدارة البيانات الموزعة (DLMs) كأساس للعديد من أنظمة الملفات العنقودية الناجحة ، حيث تستطيع الأجهزة في العنقود استخدام مساحة تخزين بعضها البعض عبر نظام ملفات موحد ، مما يوفر مزايا كبيرة في الأداء والتوافر . وتتمثل الفائدة الرئيسية في الأداء في حل مشكلة اتساق ذاكرة التخزين المؤقت للقرص بين أجهزة الكمبيوتر المشاركة. لا تُستخدم وحدة إدارة البيانات الموزعة (DLM) لقفل الملفات فحسب ، بل تُستخدم أيضًا لتنسيق جميع عمليات الوصول إلى القرص . وقد اعتمد نظام VMScluster ، وهو أول نظام عنقودي انتشر استخدامه على نطاق واسع، على وحدة إدارة البيانات الموزعة (DLM) الخاصة بنظام OpenVMS بهذه الطريقة تحديدًا.

موارد

يستخدم نظام إدارة دورة حياة البيانات (DLM) مفهومًا عامًا للمورد ، وهو كيان يجب التحكم في الوصول المشترك إليه. قد يرتبط هذا بملف، أو سجل، أو مساحة من الذاكرة المشتركة ، أو أي شيء آخر يختاره مصمم التطبيق . يمكن تعريف تسلسل هرمي للموارد، بحيث يمكن تطبيق عدد من مستويات التأمين. على سبيل المثال، قد تُعرّف قاعدة بيانات افتراضية تسلسلًا هرميًا للموارد على النحو التالي:

  • قاعدة البيانات
  • طاولة
  • سِجِلّ
  • مجال

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

أوضاع القفل

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

  • القيمة الفارغة (NL). تشير إلى الاهتمام بالمورد، لكنها لا تمنع العمليات الأخرى من قفله. وتكمن ميزتها في الحفاظ على المورد وكتلة قيمة القفل الخاصة به ، حتى في حال عدم وجود عمليات تقفله.
  • القراءة المتزامنة (CR). تشير إلى الرغبة في قراءة المورد (دون تحديثه). تسمح هذه الخاصية للعمليات الأخرى بقراءة المورد أو تحديثه، لكنها تمنعها من الوصول الحصري إليه. تُستخدم هذه الخاصية عادةً مع الموارد ذات المستوى الأعلى، وذلك لضمان إمكانية فرض قيود أكثر صرامة على الموارد الفرعية.
  • الكتابة المتزامنة (CW). تشير إلى الرغبة في قراءة المورد وتحديثه. كما تسمح للعمليات الأخرى بقراءة المورد أو تحديثه، لكنها تمنعها من الوصول الحصري إليه. ويُستخدم هذا الأسلوب عادةً مع الموارد عالية المستوى، لضمان إمكانية فرض قيود أكثر صرامة على الموارد الفرعية.
  • القراءة المحمية (PR). هذا هو قفل المشاركة التقليدي ، والذي يشير إلى الرغبة في قراءة المورد ولكنه يمنع الآخرين من تحديثه. ومع ذلك، يمكن للآخرين قراءة المورد أيضًا.
  • الكتابة المحمية (PW). هذا هو قفل التحديث التقليدي ، والذي يشير إلى الرغبة في قراءة المورد وتحديثه ويمنع الآخرين من تحديثه. ومع ذلك، يمكن للآخرين الذين لديهم حق الوصول للقراءة المتزامنة قراءة المورد.
  • حصري (EX). هذا هو القفل الحصري التقليدي الذي يسمح بالوصول للقراءة والتحديث إلى المورد، ويمنع الآخرين من الوصول إليه.

يوضح جدول الحقيقة التالي توافق كل وضع من أوضاع القفل مع الأوضاع الأخرى:

وضعهولنداCRسي دبليوالعلاقات العامةPWالسابق
هولندانعمنعمنعمنعمنعمنعم
CRنعمنعمنعمنعمنعملا
سي دبليونعمنعمنعملالالا
العلاقات العامةنعمنعملانعملالا
PWنعمنعملالالالا
السابقنعملالالالالا

الحصول على قفل

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

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

كتلة قيمة القفل

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

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

كشف حالات الجمود

عندما تحصل عملية واحدة أو أكثر على أقفال على الموارد، فمن الممكن أن ينتج عن ذلك حالة تمنع فيها كل عملية الأخرى من الحصول على قفل، ولا يمكن لأي منها المتابعة. يُعرف هذا باسم حالة الجمود ( أطلق عليها إي دبليو ديكسترا في الأصل اسم العناق المميت ). [ 1 ]

مثال بسيط على ذلك هو عندما يحصل البرنامج 1 على قفل حصري على المورد أ، ويحصل البرنامج 2 على قفل حصري على المورد ب. إذا حاول البرنامج 1 قفل المورد ب، فسيتعين عليه الانتظار حتى يحرره البرنامج 2. أما إذا حاول البرنامج 2 قفل المورد أ، فستنتظر كلتا البرنامجين إلى الأبد.

يقوم نظام إدارة دورة حياة البيانات (DLM) في نظام OpenVMS بالتحقق دوريًا من حالات التعطل. في المثال أعلاه، سيعيد طلب إضافة القفل الثاني لأحد العمليات حالة تعطل. عندها، يقع على عاتق هذه العملية اتخاذ إجراء لحل التعطل، وذلك في هذه الحالة عن طريق تحرير القفل الأول الذي حصلت عليه.

تجميع لينكس

قامت كل من شركتي Red Hat و Oracle بتطوير برامج تجميع البيانات لنظام Linux .

تمت إضافة نظام ملفات Oracle Cluster [ 2 ] إلى نواة Linux الرسمية مع الإصدار 2.6.16، في يناير 2006. تمت إزالة تحذير جودة الكود ألفا على OCFS2 في الإصدار 2.6.19.

تمت إضافة برنامج Red Hat's cluster، بما في ذلك DLM و GFS2، رسميًا إلى نواة Linux [ 3 ] مع الإصدار 2.6.19، في نوفمبر 2006.

يستخدم كلا النظامين نظام إدارة دورة حياة البيانات (DLM) المصمم على غرار نظام إدارة دورة حياة البيانات القديم الخاص بنظام VMS. [ 4 ] يتميز نظام إدارة دورة حياة البيانات الخاص بأوراكل بواجهة برمجة تطبيقات (API) أبسط. (تحتوي الوظيفة الأساسية على ثمانية معلمات، بينما تحتوي خدمة dlmlock()VMS SYS$ENQوخدمة Red Hat على 11 معلمة).dlm_lock

تطبيقات أخرى

تشمل تطبيقات إدارة دورة حياة البيانات الأخرى ما يلي:

  • طوّرت جوجل خدمة Chubby ، وهي خدمة تأمين للأنظمة الموزعة ذات الترابط الضعيف. [ 5 ] صُممت هذه الخدمة للتأمين واسع النطاق، كما توفر نظام ملفات موزعًا محدودًا ولكنه موثوق. تستخدم أجزاء رئيسية من بنية جوجل التحتية، بما في ذلك نظام ملفات جوجل ، و Bigtable ، و MapReduce ، خدمة Chubby لمزامنة الوصول إلى الموارد المشتركة. على الرغم من أن Chubby صُممت في الأصل كخدمة تأمين، إلا أنها تُستخدم الآن بكثافة داخل جوجل كخادم أسماء ، لتحل محل نظام أسماء النطاقات (DNS) . [ 5 ]
  • Apache ZooKeeper ، الذي تم إنشاؤه في Yahoo ، هو برنامج مفتوح المصدر ويمكن استخدامه لتنفيذ عمليات القفل الموزعة [ 6 ] أيضًا.
  • Etcd هو برنامج مفتوح المصدر، تم تطويره في CoreOS بموجب ترخيص Apache . [ 7 ] ويمكن استخدامه أيضًا لتنفيذ عمليات القفل الموزعة. [ 8 ]
  • Redis عبارة عن نظام تخزين مؤقت وذاكرة تخزين مؤقتة متقدمة مفتوحة المصدر، مرخصة بموجب رخصة Redis Source Available License. [ 9 ] يمكن استخدام Redis لتطبيق خوارزمية Redlock لإدارة الأقفال الموزعة. [ 10 ]
  • برنامج Consul من HashiCorp ، [ 11 ] الذي تم إنشاؤه بواسطة HashiCorp ، هو برنامج مفتوح المصدر ويمكن استخدامه لتنفيذ عمليات القفل الموزعة أيضًا.
  • يستخدم مدير الأقفال الموزع Taooka [ 12 ] أساليب "محاولة القفل" لتجنب حالات التعطل . كما يمكنه تحديد مدة صلاحية (TTL) لكل قفل بدقة نانوثانية.
  • يُعد DLM أيضًا مكونًا رئيسيًا لمشاريع صور النظام الفردي (SSI) الأكثر طموحًا مثل OpenSSI .

مراجع

  1. جيهاني، نارين (1991). آدا: البرمجة المتزامنة . دار سيليكون للنشر. ص  105. ISBN 9780929306087.
  2. kernel/git/torvalds/linux.git - شجرة مصدر نواة لينكس . Kernel.org. تم الاطلاع عليه بتاريخ 18-09-2013.
  3. kernel/git/torvalds/linux.git - شجرة مصدر نواة لينكس. رابط مهمل، مؤرشف بتاريخ 18 يوليو 2012 على archive.today . Git.kernel.org (7 ديسمبر 2006). تم الاطلاع عليه بتاريخ 18 سبتمبر 2013.
  4. نظام ملفات OCFS2 . Lwn.net (24-05-2005). تم الاطلاع عليه بتاريخ 18-09-2013.
  5. 1 2 منشور بحثي من جوجل: خدمة القفل الموزع تشابي . Research.google.com. تم الاطلاع عليه بتاريخ 18-09-2013.
  6. Zookeeper.apache.org. تم الاطلاع عليه بتاريخ 18-09-2013.
  7. "CoreOS" . coreos.com .
  8. etcd: مخزن قيم مفتاحية موزع وموثوق به لأهم بيانات النظام الموزع ، CoreOS، 16 يناير 2018 ، تم الاطلاع عليه في 20 سبتمبر 2016
  9. redis.io http://redis.io/ . تم الاطلاع عليه بتاريخ 14-04-2015 .{{cite web}}: مفقود أو فارغ |title=( مساعدة )
  10. "الأقفال الموزعة باستخدام Redis – Redis" . redis.io . تم ​​الاطلاع عليه بتاريخ 14-04-2015 .
  11. نظرة عامة على القنصل . تم الاطلاع عليه بتاريخ 19-02-2015.
  12. وصف تاوكا مؤرشف بتاريخ 2017-05-03 في Wayback Machine تم استرجاعه بتاريخ 2017-05-04.