/‫"الحوسبة" و "الأنظمة" الموزعة‬‎

‫"الحوسبة" و "الأنظمة" الموزعة‬‎

)مقدمة :

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

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

ساعدت الشبكات على إنتشار نوع من البرامج أو التطبيقات المعروفة بـ Distributed Computing و ال .Distributed Systems

Distributed Computing

الفكرة الاساسية هنا تنطبق على جميع المجتمعات و الكائنات الحية كما تنطبق على الحواسب , فكل مجتمع و فريق يتكاتف لحل مشاكل لا يستطيع الفرد حلها بمفرده، فيقوم المنظم بتحليل المشكلة و تقسيمها الى مشاكل أصغر و بذلك يسهل توزيعها على الأفراد كمهمة، كلٌ حسب مقدرته و بذلك استفدنا بجميع القدرات المتاحة لحل المشكلة فى أقصر وقت ممكن، أقصر مما يمكن لفرد واحد مهما كانت قدرته على حل المشكلة.

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

:Distributed Algorithm

 

النوع الاول :
هو البرنامج الذى يعمل على جهاز واحد و لكن يوجد به أكثر من معالج يتشاركون نفس الذاكرة و هذا النوع يعرف أكثر بالـ  Parallel Algorithms

النوع الثانى :

هو مجموعة من العمليات الغير متزامنة ( غير متتابعة) و التى تتصل ببعضها عن طريق تبادل الرسائل فيما بينها عبر وسائل الإتصال سواء كانت سلكية أو لاسلكية، و يتم إفتراض أن كلً من هذه العمليات تعمل بمفردها على معالج منفصل عن الذى تعمل عليه العمليات الأخرى و أيضًا لها الذاكرة المنفصلة عن الباقيين و بذلك فإن وسيلة الإتصال الوحيدة هى هذه الرسائل عبر الشبكة المشتركة، هذه الطريقة مشابهة لطريقة إتصال العمليات داخل الجهاز الواحد عن طريق ال (IPC (Inter-process Communication

الان نفترض وجود قناة إتصال بين عمليتان “أ” و “ب”، و أرسلت “أ” رسالة الى “ب” فهناك تأخر زمنى لا يمكن إستنتاجه أو تحديده مسبقًا و أيضًا ليس هناك ضمان بأن ” ب” قد قامت بإستلام هذه الرسالة سواء كان ذلك لعيب فى الشبكة أو لأن “ب” ليس موجودًا فى الأصل و لذلك فى هذه الأنظمة تكون العمليات غير متزامنة فلا تنتظر “أ” “ب” للانتهاء من العملية و الرد عليها و لكن تباشر “أ” القيام بمهام أخرى كتوزيع أوامر لعمليات أخرى غير “ب” أو حتى أذا لم يوجد المزيد من المهام فانها أيضًا لا تنتظر “ب” و لكن تغلق قناة الاتصال و تنتظر فقد تريد عمليات أخر الاتصال بها.

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

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

:Grid Computing

و هو صياغة لل Distributed Computing و خصائصه:

1-مجموعة من الاجهزة المنفصلة ك hardware مرتبطة ببعضها بشبكة كبيرة، يعمل على تنفيذ مهام كبيرة و معقدة تستخدم فى حسابات علمية أو رياضية.

2-المميز لهذا النوع هو أنه لا يوجد شروط على الأجهزة المشتركة سواء بعدها و تناثرها و عدم تشابه امكانيات هذه الأجهزة من حيث ال hardware أو ال software و بذلك يختلف عن ال Cluster Computing و الذى يتطلب تواجد الأجهزة قريبة من بعضها و متصلة بشبكة LAN سريعة.

3- يتطلب ال Grid  الكثير من الادوات والبرامج والاداره

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

مثال : Bionic و هو اختصار Berkeley Open Infrastructure for Network Computing

3

و هو منصة برمجية تساعد الباحثين و المؤسسات العلمية على توزيع كم هائل من البيانات المراد تحليلها على الحواسب الشخصية للمتطوعين للبرنامج حول العالم، و بذلك تكون Super Computer بدون تكلفة تذكر و يوجد للبرنامج أكثر من نصف مليون متطوع نشط و يقومون بعمليات تصل الى 2peta عملية فى الثانية و ال Peta هى 1015 لتتفوق على أسرع حاسب فى العالم و هو IBM Roadrunner

من المؤسسات التى تستفيد من هذه الخدمة : SETI@HOME لا بل أن BIONIC صمم لهذه الخدمة فقط فى البداية ثم بدأ يساعد المؤسسات الاخرى بعدها، و SETI تهدف الى تحليل الإشارات التى تلتقط من الفضاء الخارجى للتعرف على وجود كائنات حية فضائية.
اختصار : Search for Extra-Terrestrial Intelligence
http://setiathome.berkeley.edu/
4

 
 

:Distributed Systems

 

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

أهداف / خواص الانظمة الموزعة:
1-  
الهذف الاساسى هو توفير و تسهيل وصول المستخدمين و التطبيقات الى الموارد البعيدة و التى قد تكون على جهاز آخر فى شبكة ما بطريقة فعالة و سهلة بدون تعقيد. هذه الموارد قد تكون أى شئ : وسيط تخزين، معالج، طابعة ..
2- يجب على النظام إخفاء عن المستخدم حقيقة أن المهام و الموارد التى يقوم بها و يستخدمها موزعة فعليًا على أكثر من جهاز, و هذا يتضمن

[list type=”check”]

  • ‫‪‬إخفاء المكان الحقيقي للمورد
  • ‫‬عدم تأثر المستخدم بنقل المورد من مكان لآخر
  • ‫‬إخفاء إذا ما كان المورد يتم استخدامه من قبل مستخدمين أخرين أم ﻻ‬
  • ‫‪‬إخفاء ما يمكن أن يحدث إذا حدث خلل فى مورد ما (مثل فقدان بعض البيانات) و‬‫كذلك العمل على معالجة المشكلة بدون معرفة المستخدم.
  • ‫‪إذا كانت الأجهزة المشاركة مختلفة فى تكوينها، فمثلا قد يعمل بعضها بنظام‬ ‫تشغيل ويندوز و الآخر بنظام لينكس، فيجب أيضا ً “إخفاء” هذه الفروق و خاصة‬ ‫فى طريقة تخزين البيانات و عند الحصول عليها‬

[/list]

 تقديم صيغ معيارية و قواعد للتعامل مع هذا النظام, و التى يستعملها المستخدمين له لكى يقوموا بتنفيذ تطبيقاته

Scalability :  و هى من أهم التحديات التى تواجه مبرمجين و مصممى النظم, و هى القدرة على جعل النظام قابل لتحمل المزيد من المستخدمين و إضافة المزيد من الأجهزة المكونة و زيادة البعد بين أماكن المستخدمين عن الموارد و كل ذلك مع عدم تغييرات أساسية فى النظام المبدئى و عدم تغيير كيفية تعامل المستخدميين معه (مثل القوانين و الصيغ فى نقطة 3) و سهولة إدارة النظام مع كبره.

المصطلح Virtualization يستخدم للدللة على تجميع موارد و إخفاء حقيقة وجود الكثير منها و يجعل المستخدم يعتقد أنه يتعامل مع مورد واحد، مثل: Storage virtualization , Network virtualization ,Virtual private network و Database virtualization

:Cloud Computing

و   هو Architecture تعتمد على ال Distributed Systems حيث تقدم الموارد و الخدمات التى توجد داخل النظام الى المستخدمين فى مقابل نظير مادى, فكل مورد تستطيع أن تدفع فى مقابله، تستطيع أن تدفع مقابل مساحة تخزينية محددة تناسب تطبيقك و أيضًا تريد Bandwidth محدد و خدمات و برامج معينة فيمكنك أن تطلب خادم قواعد بيانات Oracle و SQL و كل هذا مقابل ما ستدفعه لكل خدمة من هذه.

و   عندها تبدأ بوضع برنامجك / تطبيقك على ال “Cloud” حيث هناك تنطبق جميع خصائص ال Distributed System فيضمن لك عدم فقدان بياناتك و عدم وجود Downtime لخادم و ذلك لأنه لا يوجد خادم محدد من الأساس مما يجعل برنامجك موثوق فيه و أدائه. و بجانب كل هذا يمكنك مستقبلا و فى أى وقت زيادة هذه الخادمات بدون أى مشاكل، مثل زيادة ال Bandwidth الخاص بك إذا وجدت أنه لم يعد كافى لمتطلباتك الحالية.

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

 

من المزودين لهذه الخدمة :

 Google App Engine

appengine_logo

Amazon Elastic Compute Cloud

AWS_LOGO_CMYK

Windows Azure Platform

azure