في هذه الصفحة
تتميز النظم الموزعة بعدة خصائص سنتناول البعض منها والتي تعد من أهم الخصائص التي يجب الالمام بها في هذا المقال.
التسامح مع الخطأ في النظم الموزعة
من الأمور المسلم بها في عالم النظم الموزعة وفي عالم البرمجيات هو امكانية حدوث خطأ في أي وقت ممكن ولأي سبب من الأسباب، وأشكال حدوث الخطأ كثيرة ويمكنها أن تأخذ العديد من الصور والأمثلة.
ولكي تكون قادرًا على بناء نظام قوي لابد لك كمهندس برمجيات معرفة وادراك كيفية تحقيق مبدأ التسامح مع الخطأ أو ما يعرف بالـ Fault Tolerance وهذا لإنه هو السبيل لبناء نظام قوي قادر على الصمود أمام مختلف أنواع المشاكل والأخطاء المتوقع والغير متوقع حدوثها.
كما ذكرنا سابقًا يمكن للأخطاء أن تتخذ العديد من الأشكال .. فعلى سبيل المثال من الممكن ولأي سبب من الأسباب أثناء تصفحك على الموبايل أو اللابتوب الشخصي الخاص بك .. حدوث أي عطل أو فقدان الجهاز للطاقة لأي سبب من الأسباب .. وقد تكون المشكلة ليست متصلة بالـ Software ولكن من الوارد جدًا حدوث أية مشكلة خاصة بالـ Hardware كذلك.
واذا كنت تحتاج إلى الهاتف أو اللابتوب الشخصي لاداء عملك، فحتمًا سيتعطل عملك لجزء من الوقت حتى تقوم باصلاح العطل أو استخدام جهاز آخر بديل.
والآن تخيل ماذا لو حدث هذا العطل في نظام (اقرأ-تِك) الذي قمنا ببناءه سويًا وهو الآن يتكون من العديد من العقد التي تحتوي على الـ Backend Server والعديد من العقد التي تحتوي على قاعدة بيانات ويتم عمل مزامنة بينهم وبين بعضهم لكي تصبح البيانات متواجدة في جميع العقد بدوم مشاكل ..
ماذا سيحدث إذا حدثت مشكلة في احدى العقد أو في أكثر من عقدة في نفس ذات الوقت ؟ وما المشاكل أو الأخطاء المتوقع والغير متوقع حدوثها لهذا النظام ؟
الاجابة هي أنه إذا حدثت أية مشكلة أو عطل في النظام الذي قمنا ببناءه، فعلى عكس المتوقع لن يتوقف عمل النظام بأكمله وهذا لأن النظام مبني من خلال النظم الموزعة وأحد أهم المميزات في النظم الموزعة هي التسامح مع الخطأ وامكانية عمل النظام بدون أية مشاكل في حالة حدوث عطل في أحد مكوناته أو أجزاءه. وهذا ما عرفناه في الدروس السابقة.
من أهم مميزات النظم الموزعة قابلية النظام وقدرته على اكمال المهام والعمل بشكل جيد في حالة حدوث أية أخطاء في أحد مكوناته.
عرفنا ما الذي سيحدث للنظام إذا حدثت أية مشكلة في إحدى مكوناته أو أجزاءه .. ولكن ما هي المشاكل أو الأخطاء المتوقع والغير متوقع حدوثها لمثل هذا النظام ؟
أمثلة على بعض المشاكل والأخطاء
إذا تعاملنا مع (اقرأ-تِك) كمثال كما ذكرناه سابقًا فمن المشاكل أو الأخطاء المتوقع حدوثها الآتي:
- من الممكن لاحد العقد التي تقوم باستقبال الـ Requests من المستخدمين أن تتلقى حمل زائد عن المتوقع وهو ما يعرف بالـ High Traffic أو High Traffic Spike لجزء من الوقت مما يجعلها غير قادرة على تحمل المزيد وحدوث عطل ما بها. وهذا لإنها ستصل إلى اقصى حدود مواردها من CPU / RAM ولن تستطيع التعامل مع أي Requests آخرى
- إذا حدثت مشكلة في إحدى عقد قواعد البيانات .. لن تستطيع عملية المزامنة أن تتم بشكل فعال وهذا سيؤدي إلى تأخر أو حدوث عدم تناسق في البيانات الموجودة في مختلف العقد الآخرى وبين العقدة التي حدث بها العطل ..
- من الممكن حدوث أي عطل غير متوقع في احد العقد على سبيل المثال الـ Hardware كالـ Hard Disk أو أية موارد موجودة ايضًا .. فمن الممكن حدوث تلف ما بها.
- من الممكن حدوث خطأ برمجي أثناء التطوير في الكود المسئول عن هذا التطبيق والذي من الممكن أن يؤدي إلى حدوث بعض الأخطاء والمشاكل ويقوم التطبيق باطلاق Exceptions.
ويوجد العديد من المشاكل التي من الممكن حدثوها كحدوث حريق أو أية مشاكل كارثية قد تؤدي إلى دمار العقد من الأساس وهنالك الكثير من الأمثلة على ذلك.