Quorum in Distributed Systems 008

النصاب في النظم الموزعة يتمثل بأقل عدد ممكن من العقد التي تحتاج إلى موافقتها حتى تتأكد من صحة العملية التي تقوم بها ويتم استعماله بشكل أساسي في العديد من الخوارزميات في النظم الموزعة
Quorum in Distributed Systems 008

في هذه الصفحة

قبل أن نتطرق للحديث عن النصاب في النظم الموزعة، دعونا نتذكر ما تحدثنا عنه سابقًا في النسخ المتماثل وبالأخص في النسخ المتماثل التزامني والذي رأينا أنه يعاني من بطء في الأداء خصوصًا مع عمليات الكتابة. وذلك لاحتياج الـ Leader أن يقوم بانتظار عمليات الكتابة أن تتم في الـ Follower Replicas ومن ثم الرد على المستخدم.

ورأينا النوع الآخر أيضًا والذي يقوم بالرد على المستخدم بمجرد استلام الـ Leader Replica للتغييرات ومن ثم يقوم فيما بعد بعملية التزامن دون أن يؤثر على المستخدم. 

ولكن ألا يوجد حل آخر يمكننا من تحقيق التوازن ؟

في الحقيقة يوجد والحل هو ما سنتطرق للحديث عنه الآن وهو مبدأ النصاب أو ما يعرف بالـ Quorum.

ما هو النصاب ؟

النصاب في النظم الموزعة يتمثل بأقل عدد ممكن من العقد التي تحتاج إلى موافقتها حتى تتأكد من صحة العملية التي تقوم بها ويتم استعماله بشكل أساسي في العديد من الخوارزميات في النظم الموزعة. وفي مشكلتنا السابقة مع النسخ المتماثل التزامني يمكننا حلها وتحقيق التوازن عن طريق استخدام النصاب.

فلنفترض أنه يوجد نظام يحتوي على عشرة (١٠) عقد وبالتالي سيصبح ليدنا Leader Node و Follower Nodes .. عند حدوث عملية كتابة أو حدوث أي تغيير في البيانات .. لن ننتظر إلى أن يقوم الـ Leader بنشر تلك التغييرات في الـ 10 Replicas وتأخير الرد على المستخدم، ولكن باستعمال النصاب يمكننا القول بأنه إذا كان هنالك 6 Replicas فقط قاموا بتأكيد استلام التغييرات، سنعتبر تلك العملية ناجحة ويقوم الـ Leader بالرد على المستخدم بالنجاح.

العقدة الأولى والثانية حققوا النصاب وتم اعتبار العملية ناجحة في حين أن العقدة الثالثة كان بها عطل ما

فالآن قمنا بتحسين الأداء الناتج عن المشكلة السابقة والذي كان يحتاج إلى انتظار تأكيد جميع الـ Replicas إلى انتظار عدد (معين) وهو النصاب حتى يتم اعتبار العملية ناجحة.

 والآن يمكننا النظر إلى أنه بزيادة عدد الـ Quorum يزداد اتساق البيانات ويزداد فرصة حصول المستخدم أثناء عمليات القراءة بأن يستلم أحدث التغييرات. ولكن هذا سيؤثر في الـ Response Time عكسيًا .. ومع وجود عدد أقل من الـ Quorum سنصل إلى سرعة أعلى ولكن البيانات لن تكون متسقة كلها في آنٍ واحد وفرصة حصول المستخدم على آخر التغييرات ستقل.

والمعادلة العامة لتحقيق النصاب هي Rw > R / 2  حيث تمثل الـ Rw عدد الـ Replica-Write وتمثل الـ R عدد الـ Replicas في النظام. 

استعمال النصاب لتحقيق Serialisability   

 يوجد استعمالات أخرى للنصاب في النظم الموزعة وأشهرها أيضًا الـ Distributed Transactions حيث يمكنه تحقيق الـ Serialisability بين الـ Replicas المختلفة والحفاظ على الـ Order of Transactions وعدم جعل Read/Write Operation تتم بشكل Concurrently.

وهذا يتم تحقيقه من خلال وجود كلا من الـ Read Replica Quorum والـ Write Replica Quorum وتوجد بعض المعادلات التي تساعد في تحقيق ذلك لتحديد عدد الـ Replica Quorum. ولكننا لن نتطرق إليها

اشترك الآن بنشرة اقرأ-تِك الإخبارية

لا تدع أي شيء يفوتك. واحصل على أحدث المقالات المميزة مباشرة إلى بريدك الإلكتروني وبشكل مجاني!
رائع! تحقق من بريدك الإلكتروني واضغط على الرابط لإكمال تسجيل الدخول.
حدث خطأ! من فضلك قم بادخال بريد إلكتروني صحيح!