مقدمة سأحاول فى هذه الكتابة توضيح تأثير أمكانية توصيل الحواسيب اللية ببعضها البعض و قدرتها على أستبدال المعلومات فيما بينها )شبكات الحاسب اللى( على طريقة التفكير فى تصميم البرامج و أمكانية تنفيذ البرامج التى كان من الصعب الحصول على قدرة معالجة تستطيع تنفيذها. مع بداية الثمانينات بدأ التقدم فى أتجاهين بالنسبة للحاسب ,و هما تصنيع المعالجات الميكرو و التى أستطاعت التطور فى فترة زمنية قصيرة نسبيا ً أستنادا ً الى قانون موور ,و ذلك أدى الى تطور سريع لم تشهده أى صناعة أخرى حيث أستطعنا التطوير فى الصناعة حتى وصلنا الى تصنيع الجهزة التى كانت تكلف مليين الدولرات سابقا ً و لكنها الن فى حدود 1000دولر ,بينما التطوير الخر كان فى أتجاه حعل هذه الجهزة قادرة على التصال ببعضها فتم تطوير ال LANلتسمح بالتصال ما بين مئات الحواسيب و بسرعات كبيرة جدًا. ساعدت الشبكات على أنتشار نوع من البرامج أو التطبيقات المعروفة بـ Distributed Computingو ال .Distributed Systems
Distributed Computing الفكرة الساسية هنا تنطبق على جميع المجتمعات و الكائنات الحية كما تنطبق على الحواسب ,فكل مجتمع و فريق يتكاتف لحل مشاكل ل يستطيع الفرد حلها بمفرده ,فيقوم المنظم بتحليل المشكلة و تقسيمها الى مشاكل أصغر و بذلك يسهل توزيعها على الفراد كمهمة ,كل ً حسب مقدرته و بذلك أستفدنا بجميع القدرات المتاحة لحل المشكلة فى أقصر وقت ممكن ,أقصر مما يمكن لفرد واحد مهما كانت قدرته على حل المشكلة. هذه هى نفس الفكرة فى النظم و البرامج التى تقوم بتوزيع المهام التى تقوم بها على عدة أجهزة لتقوم بتنفيذها حسب الجزء المطلوب من كل منها. :Distributed Algorithm النوع الول هو البرنامج الذى يعمل على جهاز واحد و لكن يوجد به أكثر من معالج يتشاركون نفس الذاكرة و هذا النوع يعرف أكثر بال .Parallel Algorithms النوع الثانى: هو مجموعة من العمليات الغير متزامنة ) غير متتابعة( و التى تتصل ببعضها عن طريق تبادل الرسائل فيما بينها عبر وسائل التصال سواء كانت سلكية أو لسلكية ,و يتم أفتراض أن كل ً من هذه العمليات تعمل بمفردها على معالج منفصل عن الذى تعمل عليه المعالجات الخرى و أيضا ً لها الذاكرة المنفصلة عن الباقيين و بذلك فأن وسيلة التصال الوحيدة هى هذه الرسائل عبر الشبكة المشتركة ,هذه الطريقة
2
Computer Networks Design and Programming report
مشابهة لطريقة أتصال العمليات داخل الجهاز الواحد عن طريق ال IPC (Inter-process .(Communication الن نفترض وجود قناة أتصال بين عمليتان "أ" و "ب" ,و أرسلت "أ" رسالة الى "ب" فهناك تأخر زمنى ل يمكن أستنتاجه أو تحديده مسبقا ً و أيضا ً ليس هناك ضمان بأن "ب" قد قامت بإستلم هذه الرسالة سواء كان ذلك لعيب فى الشبكة أو لن "ب" ليس موجودا ً فى الصل و لذلك فى هذه النظمة تكون العمليات غير متزامنة فل تنتظر "أ" "ب" للنتهاء من العملية و الرد عليها و لكن تباشر "أ" القيام بمهام أخرى كتوزيع أوامر لعمليات أخرى غير "ب" أو حتى أذا لم يوجد المزيد من المهام فانها أيضا ً ل تنتظر "ب" و لكن تقفل قناة التصال و تنتظر فقد تريد عمليات أخر التصال بها. هذا الساس فى تنفيذ البرنامج يعد تقييد له عند تصمييمه ,فتصمييم ألجوريثم عادى لعملية يختلف فى تكوينه عن تصميم نفس اللجوريثم ليعمل على نظام موزع كهذا و قد يصل المر الى تغيير فكرة العمل الصلية للستفادة من كثرة الموارد المتاحة فى الشبكة و التى لم يكن من الممكن تطبيقه عندما كان اللجوريثم يعمل على جهاز واحد و ربما معالج واحد. نقطة فاصلة فى هنا وهى أنه ليس أي برنامج يتم تطبيقه كألجوريثم موزع يجب أن يكون أسرع من البرنامج الذى يعمل على على معالج واحد ,فكما زكرنا أنه يوجد عوامل قد تؤدي الى تباطأ العمليات بشكل غير محسوب اذا كانت الشبكة بها عيوب أو البعد المكانى للجهزة التى تنفذ العمليات ,و لهذا ال Distributed Computingأكثر حيوية فى نطاق العمليات التى تعمل على مجموعة بيانات قد تصل الى العديد من الجيجابايت فى الثانية و هذا قد يبدو مستحيل أن يتحمله جهاز واحد.
و لذلك نتعرف على
Grid Computing و هو صياغة لل Distributed Computingو خصائصه: •مجموعة من الجهزة المنفصلة ك hardwareمرتبطة ببعضها بشبكة كبيرة. •يعمل على تنفيذ مهام كبيرة و معقدة تستخدم فى حسابات علمية أو رياضية . •قد يكون حجمها صغير فى نطاق شركة أو كبيرة على نطاق العديد من الشركات و الشبكات المتصلة ببعضها. •المميز لهذا النوع هو أنه ل يوجد شروط على الجهزة المشتركة سواء بعدها و تناثرها و عدم تشابه امكانيات هذه الجهزة من حيث ال hardwareأو ال , softwareو بذلك يختلف عن ال Cluster Computingو الذى يتطلب تواجد الجهزة قريبة من بعضها و متصلة بشبكة LAN سريعة. •يتطلب ال Gridالكثير من الدوات ,البرامج و الدارة. من أشهر التطبيقات لهاذا النوع هو ما تقدمه مؤسسات البحث علمى من امكانية تسمح للمتطوعين بأن يتم أستخدام أجهزتهم للمشاركة فى ال Gridالتى تقوم بتحليل البيانات العلمية التى تعمل المؤسسة عليها فيقوم المتطوع بتنصيب البرنامج الخاص و الذى يحتوى على العملية التى تقوم بتحليل بيانات التى يأخذها من خادم على النترنت و بعد تحليلها يرجع الناتج الى الخادم و هنا يمكن أن يستغرق جهاز المتطوع الكثير من الوقت قد يصل الى أيام لكى يرجع الناتج ,و بهذا يتم تكوين ,Gridشبكة أتصالها هى النترنت و قد يصل الجهزة المشتركة فيها الى مليين المتطوعين .
3
Computer Networks Design and Programming report
مثال Bionic :و هو اختصار Berkeley Open Infrastructure for Network Computing
و هو منصة برمجية تساعد الباحثين و المؤسسات العلمبة على توزيع كم هائل من البيانات المراد تحليلها على الحواسب الشخصية للمتطوعين للبرنامج حول العالم ,و بذلك تكون Super Computerبدون تكلفة تذكر و يوجد للبرنامج أكثر من نصف مليون متطوع نشط و يقومون بعمليات تصل الى 2petaعملية فى الثانية و ال Petaهى 1015لتتفوق على أسرع حاسب فى العالم و هو .IBM Roadrunner من المؤسسات التى تستفيد من هذه الخدمة SETI@HOME :ل بل أن BIONICصمم لهذه الخدمة فقط فى البداية ثم بدأ يساعد المؤسسات الخرى بعدها ,و SETIتهدف الى تحليل الشارات التى تلتقط من الفضاء الخارجى للتعرف على وجود كائنات حية فضائية. اختصار Search for Extra-Terrestrial Intelligence : http://setiathome.berkeley.edu/
Distributed Systems هو مفهوم مصاحب لل Distributed Computingو المقصود هو تصميم شبكة من الجهزة و ربطها مع بعض بأستخدام نظام برمجى يجعل مستخدم هذا النظام يعتقد انه يعمل على حاسب واحد و ليس عدة حواسب مرتبطة ,و هذا هو أهم ما يميز هذه النظمة و هو إبعاد المستخدم عن التصميم الداخلى و تعقيد التعامل مع أكثر من حاسب و كيفية التصال بينهم و توزيع المهام ... أهداف /خواص النظمة الموزعة:
4
Computer Networks Design and Programming report •الهذف الساسى هو توفير و تسهيل وصول المستخدمين و التطبيقات الى الموارد البعيدة و التى قد تكون على جهاز أخر فى شبكة ما بطريقة فعالة و سهلة بدون تعقيد .هذه الموارد قد تكون أى شئ :وسيط تخزين ,معالج ,طابعة ... •يجب على النظام إخفاء عن المستخدم حقيقة أن المهام و الموارد التى يقوم بها و يستخدمها موزعة فعليا ً على أكثر من جهاز ,و هذا يتضمن : إخفاء المكان الحقيقي للمورد . عدم تأثر المستخدم بنقل المورد من مكان لخر. إخفاء إذا ما كان المورد يتم استخدامه من قبل مستخدمين أخرين أم ل. إخفاء ما يمكن أن يحدث إذا حدث خلل فى مورد ما )مثل فقدان بعض البيانات( و كذلك العمل على معالجة المشكلة بدون معرفة المستخدم. إذا كانت الجهزة المشاركة مختلفة فى تكوينها ,فمثل ً قد يعمل بعضها بنظام تشغيل ويندوز و الخر بنظام لينكس ,فيجب أيضا ً "إخفاء" هذه الفروق و خاصة فى طريقة تخزين البيانات و عند الحصول عليها. •تقديم صيغ معيارية و قواعد للتعامل مع هذا النظام ,و التى يستعملها المستخدمين له لكى يقوموا بتنفيذ تطبيقاتهم. • :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الخاص بك أذا وجدت أنه لم يعد كافى لمتطلباتك الحالية.
5
Computer Networks Design and Programming report
أنت الن على السحابة و ل يقلقك ما يوجد بداخلها و ما هو تركيبها أو كيف تعمل أو أين سيتم تخزين بياناتك و هل هى بأمان ؟ و هل يعمل الخادم الخاص بالبرنامج ؟ هل عدد المستخدمين كثير و ل يستطيع الخادم تحمل المتطلبات ؟ ,كل ما يهمك هو وصول الخدمات التى تدفع مقابلها من أجل أن يعمل برنامجك بعد أن تضعه على الكلود. من المزودين لهذه الخدمة :
Google App engine
Amazon Elastic Compute Cloud