ما النظام الموزع؟
ليس الاتصال بالشبكة وحده كافيًا. النظام الموزع يضيف تنسيقًا برمجيًا يجعل مكوّنات مستقلة تتعاون، ويخفي تعددها عن المستخدم قدر الإمكان.
تعريف من الأدبيات: البيانات
مجموعة بيانات مترابطة منطقيًا موزعة على عقد معالجة مختلفة في شبكة حاسوبية.
تعريف من الأدبيات: الحواسيب
مجموعة حواسيب مستقلة تظهر للمستخدمين كما لو كانت حاسوبًا واحدًا.
مهما اختلف التعريف، يبقى تقاسم الموارد الدافع الرئيس إلى بناء الأنظمة الموزعة.
| البعد | شبكة الحاسوب | النظام الموزع |
|---|---|---|
| ظهور الأجهزة | الحواسيب المستقلة ظاهرة ويمكن عنونتها صراحة. | وجود الحواسيب المتعددة المستقلة شفاف قدر الإمكان. |
| منظور المستخدم | أجهزة وعناوين وخدمات منفصلة. | كل واحد متكامل. |
| الدور | توفر الاتصال. | تنسق المكوّنات وتشارك الموارد فوق الشبكة. |
من عُقد مستقلة إلى خدمة واحدة
أمثلة الشبكات التي قد تستضيف أنظمة موزعة
- شبكات الهاتف والحوسبة المتنقلة.
- شبكات المؤسسات والمصانع والجامعات والمنازل.
- الشبكات داخل السيارات.
- الشبكات على متن الطائرات والقطارات.
ثلاث نتائج لا يمكن تجاهلها
1. التزامن Concurrency
تعمل الحواسيب المختلفة في الوقت نفسه. لذلك يجب الإجابة: ماذا يحدث إذا حاول حاسوبان الوصول إلى المورد نفسه معًا؟ ويزيد عدم ثبات تأخير الشبكة صعوبة المزامنة.
2. لا ساعة عالمية
تتعاون البرامج بالرسائل، لكن التنسيق الدقيق يحتاج تصورًا مشتركًا لوقت الأحداث. توجد حدود لدقة مزامنة الساعات، فلا توجد قيمة عالمية واحدة يمكن عدها «الوقت الصحيح» للجميع.
3. أعطال مستقلة
قد يتعطل مكوّن ويبقى غيره عاملًا. وقد يعزل خطأ الشبكة مكوّنًا من دون إيقافه؛ لذلك يظهر الغموض حين لا يصل الإقرار.
لماذا غياب ACK غامض؟
أمثلة الأنظمة الموزعة
| المثال | وصف المحاضرة | الفكرة البارزة |
|---|---|---|
| الإنترنت | نظام موزع ضخم جدًا يتكون من شبكات حاسوبية كثيرة مترابطة؛ وقد أنتج تطويره وخدماته حلولًا عملية لمسائل الأنظمة الموزعة. | نطاق واسع وعدم تجانس كبير. |
| الإنترانت | «إنترنت مصغر» يستخدم تقنيات الإنترنت نفسها، لكن تتحكم به مؤسسة. | توزيع داخلي مع إدارة مؤسسية. |
| العنقود Cluster | نظام معالجة متوازية أو موزعة من حواسيب مستقلة مترابطة تعمل تعاونيًا كمورد حاسوبي واحد متكامل. | خدمات شديدة القابلية للتوسع، مثل محركات البحث. |
| الحوسبة المتنقلة | قوة الحوسبة الحديثة تسمح بأجهزة صغيرة تستفيد من معلومات الشبكة، وقابليتها للحمل والاتصال من أماكن مختلفة تجعل الحوسبة المتنقلة ممكنة. | الحاسوب المحمول والهاتف المحمول. |
| الحوسبة السحابية | تطبيقات وتخزين وحوسبة عبر الإنترنت تكفي معظم احتياجات المستخدم، فتقل أو تزول حاجته إلى التخزين المحلي وبرامج التطبيقات المحلية. | كل شيء كخدمة، والدفع حسب الاستخدام، وتقليل متطلبات جهاز المستخدم. |
من المورد إلى الاستدعاء البعيد
عتاد Hardware
مثل الطابعة المشتركة.
برمجيات عاملة
جزء برنامج قيد التشغيل أو كائن موزع.
بيانات Data
مثل الملفات.
يُستخدم مصطلحا الموارد والمكوّنات لوصف كيفية بناء النظام الموزع. المورد يكون مغلفًا داخل حاسوب، ولا يصل إليه حاسوب آخر إلا بالاتصال، ويديره برنامج يعرض واجهة اتصال.
| المصطلح | التعريف |
|---|---|
| Resource | عنصر عتادي أو برمجي أو بيانات قابل للمشاركة. |
| Service | جزء مميز من نظام حاسوبي يدير مجموعة موارد مترابطة ويعرض وظائفها للمستخدمين والتطبيقات عبر عمليات محددة جيدًا. |
| Server | برنامج عامل على حاسوب شبكي يقبل رسائل طلب من برامج عملاء على حواسيب أخرى، ينفذ الخدمة، ثم يرسل الرد المناسب. |
| Client | برنامج يرسل طلبًا إلى الخادم للاستفادة من الخدمة. |
| Remote Invocation | التفاعل الكامل بين العميل والخادم: طلب، تنفيذ، ورد. |
دورة الاستدعاء البعيد
تحديات تصميم النظام الموزع
1. عدم التجانس Heterogeneity
ينبغي أن تتشغّل المكوّنات معًا رغم اختلاف الشبكات، ومعماريات العتاد، وأنظمة التشغيل، ولغات البرمجة، والمطورين. تخفي الفروق أدوات مثل بروتوكولات الإنترنت، والبرمجيات الوسيطة CORBA وJava RMI، والشيفرة المتنقلة التي تُرسل إلى حاسوب آخر وتعمل في الوجهة.
2. الانفتاح Openness
يجب أن تسمح الواجهات بإضافة المكوّنات أو استبدالها. الانفتاح يحدد إمكان توسيع النظام وإعادة تنفيذه بطرق مختلفة، ويتحدد خصوصًا بمدى إضافة خدمات مشاركة موارد جديدة وإتاحتها لبرامج عملاء متنوعة. والخطوة الأولى هي نشر توثيق المكوّنات وواجهاتها للمطورين.
3. الأمن Security
لا يصل إلى الموارد إلا المخولون، وتُستخدم بالطريقة المقصودة.
السرية
الحماية من كشف المعلومات لفرد غير مخول.
السلامة Integrity
الحماية من التغيير أو الإفساد.
التوافر
الحماية من التدخل في وسائل الوصول إلى الموارد.
4. قابلية التوسع Scalability
- يبقى النظام فعالًا مع زيادة عدد المستخدمين.
- ينبغي أن يزداد الأداء عند إضافة موارد.
- يعمل بكفاءة عبر مقاييس تبدأ من إنترانت صغيرة وتصل إلى الإنترنت.
- التخزين المؤقت Caching والنسخ المتماثل Replication في الويب مثالان لدعم التوسع.
5. معالجة الفشل Failure Handling
الفشل في النظام الموزع جزئي: تفشل مكوّنات فيما تواصل أخرى العمل. لذلك لا ينبغي لفشل مكوّن واحد أن يسقط النظام كله.
| التقنية | مثال الشريحة | الهدف |
|---|---|---|
| اكتشاف الفشل | Checksums | كشف تلف البيانات أو الرسالة. |
| إخفاء الفشل | إعادة إرسال الرسائل التالفة | منع أثر التلف من الظهور. |
| تحمّل الفشل | معالجة الاستثناءات | متابعة مضبوطة أو مسار بديل. |
| الاسترداد | Rollback | العودة إلى حالة سليمة سابقة. |
| الفائض Redundancy | مكوّنات زائدة | إبقاء الخدمة عند تعطل نسخة. |
6. التزامن Concurrency
يتيح التزامن مشاركة الخدمات والتطبيقات، لكن على كل كائن يمثل موردًا مشتركًا أن يعمل بصورة صحيحة في البيئة المتزامنة. يجب مزامنة عملياته بحيث تبقى بياناته متسقة؛ ومن الأدوات القياسية Semaphores المستخدمة في معظم أنظمة التشغيل.
الشفافية: إخفاء التوزيع
الشفافية هي إخفاء انفصال المكوّنات عن المستخدم ومبرمج التطبيق، بحيث يُدرَك النظام كلًا واحدًا لا مجموعة أجهزة مستقلة.
| النوع | ما الذي يتيحه أو يخفيه؟ | مثال توضيحي |
|---|---|---|
| Access | الوصول إلى الموارد المحلية والبعيدة بالعمليات نفسها. | فتح ملف بالطريقة نفسها أينما كان. |
| Location | الوصول دون معرفة المكان الفيزيائي أو الشبكي، كالمبنى أو عنوان IP. | اسم خدمة ثابت بعد نقلها. |
| Concurrency | تشغيل عمليات متزامنة على موارد مشتركة دون تداخل. | تحديثات قاعدة بيانات متسقة. |
| Replication | استخدام نسخ متعددة لرفع الاعتمادية والأداء دون معرفة المستخدم أو المبرمج بها. | نسخ خلف موازن حمل. |
| Failure | إخفاء الأعطال وإتمام المهام رغم فشل عتاد أو برمجيات. | التحول إلى خادم احتياطي. |
| Mobility | تحريك الموارد والعملاء دون التأثير في تشغيل المستخدمين أو البرامج. | استمرار جلسة جهاز متنقل. |
| Performance | إعادة تهيئة النظام لتحسين الأداء عند تغير الحمل. | تغيير توزيع الطلبات. |
| Scaling | توسيع النظام والتطبيقات دون تغيير بنية النظام أو خوارزميات التطبيق. | نمو العقد دون تغيير كود العميل. |
ما الذي يراه المستخدم؟
سيناريوهات محلولة وقواعد التفكير
لا تحتوي الشرائح على مسائل رقمية، لكنها تطرح حالات تصميمية. هذه طريقة حلها اعتمادًا على قواعد المحاضرة.
سيناريو 1: أرسلت طلبًا ولم يصل الإقرار
- لا تستنتج أن الطلب لم يصل؛ قد يكون ضاع، أو وصل ونُفذ ثم ضاع الرد، أو تعطل طرف، أو طال التأخير.
- صنّف الاحتمالات: فشل شبكة أو عميل أو خادم أو مجرد تأخير.
- استخدم مهلة وإعادة إرسال مع رقم طلب يمنع تنفيذ الأثر مرتين.
- استخدم كشف التلف أو نسخة خادم أو معالجة استثناء أو Rollback وفق طبيعة العملية.
سيناريو 2: عميلان يعدلان موردًا معًا
- حدد المورد المشترك والحالة التي يجب أن تبقى متسقة.
- حدد العملية الحرجة: القراءة ثم التعديل ثم الكتابة.
- امنع التداخل غير الآمن بقفل أو Semaphore مناسب.
- اختبر ترتيبات تنفيذ مختلفة للتأكد من غياب Race Condition.
سيناريو 3: خدمة ويب لا تتحمل نمو المستخدمين
- حدد موضع الاختناق: حوسبة أم تخزين أم اتصال.
- استخدم Cache للبيانات المتكررة وReplication لتوزيع الطلبات ورفع الاعتمادية.
- حافظ على شفافية الموقع والنسخ كي لا يتغير برنامج العميل.
- تحقق تجريبيًا من أن إضافة الموارد رفعت الأداء؛ فهذا شرط التوسع الوارد في الشريحة 16.
خريطة الشرائح الكاملة
افتح أي شريحة لمراجعة ما ورد فيها دون فقد أي نقطة من الملف الأصلي.