# حوسبة موزعة

الحوسبة الموزعة (بالإنكليزية: Distributed computing) هي مجال من مجالات هندسة الحاسبات، يدرس ما يسمى بالأنظمة الموزعة. وهي نظام برمجيات يتألف من مجموعة من أجهزة الحواسيب التي تتصل مع بعضها البعض من خلال شبكة موصلة فيما بينها. يكون التواصل والتفاعل بين هذه الاجهزة من خلال تمرير رسائل. ، وتتفاعل هذه المكونات مع بعضها البعض من أجل تحقيق هدف مشترك. تسمى برامج الحاسوب التي تعمل على الأنظمة الموزعة برامج موزعة.
في الحوسبة الموزعة، يتم تقسيم المشكلة إلى مشاكل صغيرة، ثم يتم توزيعها على الحواسيب ليتم حل هذه المشكلة. كلمة وزعت في مصطلحات مثل «نظام توزيع»، «البرمجة الموزعة»، و «خوارزمية توزيع» يشير أصلا إلى شبكات الحاسوب حيث تم توزيع الحواسيب الفردية جسديا في بعض المناطق الجغرافية. تستخدم المصطلحات في الوقت الحاضر في نطاق أوسع من ذلك بكثير المعنى، حتى في إشارة إلى عمليات مستقلة التي تعمل على نفس الحاسوب الفعلي والتفاعل مع بعضها البعض من خلال تمرير الرسالة وبينما لا يوجد تعريف واحد للنظام توزيع، وتستخدم الخصائص المعرفة التالية شيوعا:
* هناك العديد من الكيانات الحسابية مستقلة، كل منها له الذاكرة المحلية الخاصة بها.
* تتواصل هذه الكيانات مع بعضهم البعض من خلال تمرير الرسالة.

## الفكرة من وراء الحوسبة الموزعة

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

## أسباب استخدام الحوسبة الموزعة

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

## مميزات الانظمة الموزعة

تتميز الأنظمة الموزعة بالعديد من المميزات نذكر منها:
* لا وجود لنبضات ساعة مشتركة بين الأجهزة، أي كل جهاز له نبضات الساعة مستقلة عن الأجهزة الأخرى.
* لا يوجد ذاكرة مشتركة، وكما قلنا يتم تبادل المعلومات عن طريق تمرير الرسائل.
* القدرة على تحمل الفشل tolerate failures.
* القدرة على التوسع في بنية المنظومة (الشبكة، عدد الأجهزة).
* اتاحة التفاعل والحفاظ على استقتلالية الاجهزة.
* تحسين اداء الاجهزة، لانه بوجود عدة معالجات يكون انجاز المهام أفضل سرعة.
* كل جهاز أو عقدة يرى جزء بسيط من المنظومة، ويتعامل مع جزء محدد من الدخل (نوع محدد من المعطيات).
* حل مشكلة التباعد الجغرافي بين الاجهزة والموارد.
* يتمكن عدة مستخدمين من مشاركة قاعدة بيانات واحدة، ومشاركة الموارد مثل صفحات الويب والملفات وموارد مادية أخرى قد تكون باهظة الثمن مثل الطابعات الليزرية.

## هيكلية النظم الموزعة

هي عبارة عن طريقة ربط الشبكات مع بعضها البعض من خلال:
العميل / نظام الخادم (client\server): بنية خدمة العملاء هو وسيلة لتقديم خدمة من مصدر مركزي. هناك خادم واحد يقدم خدمة، والعديد من العملاء يتم التواصل مع الخادم تستهلك منتجاتها. في هذه الهيكيلة مراكز خدمة العملاء لديهم وظائف مختلفة. وظيفة الخادم هو للرد على طلبات الخدمة من العملاء، في حين أن وظيفة العميل لاستخدام البيانات المقدمة استجابة من أجل تنفيذ بعض المهام.
الند للند النظام (peer_to_peer): مصطلح يستخدم الند للند لوصف النظم الموزعة التي يتم فيها تقسيم العمل بين جميع مكونات النظام. كافة الحواسيب بإرسال واستقبال البيانات، وأنهم جميعا تساهم بعض قوة المعالجة والذاكرة. كما يزيد نظام توزيع في الحجم، وقدرته على زيادة الموارد الحاسوبية. في نظام الند للند، جميع مكونات النظام تسهم بعض قوة المعالجة والذاكرة إلى حساب الموزعة.

## اساسيات للحصول على نظام موزع مثالي

◦Concurrency of components: يعني ان وجود جهاز على الشبكة لا يؤثر في الأجهزة الآخرى بمعنى يمكن ان اقوم بالعمل على جهازي بينما شخص آخر في نفس الوقت يعمل على جهازه.
◦ No global clock: لا يكون هناك اوقات معينه للدخول على النظام بمعنى يكون مفتوح تماماً دون أي قيود في الوقت ◦ Independent failures: عطل في جهاز واحد لا يؤثر على الاجهزة الآخرى أي يكون الوضع تحت السيطرة

## الصعوبات والتحديات التي نواجهها للحصول على نظام موزع

1/ التغاير (hetrogeneity): أي اختلاف نوع الأجهزة والبرامج والأنظمة ونوع الشبكة ولحل ذلك نستخدم بعض البروتوكولات (protocols), أو استخدام البرمجيات الوسيطة (middleware) وهي مجموعة من السوفت وير توضع في الطبقات الداخلية للشبكة، أو استخدام الجهاز الظاهري (virtual machine) جعل ملف يفتح على جهاز آخر وهذا الجهاز لا يمتلك البرنامج الرئيسي.
2/ الانفتاحية (openess): عدد الأجهزة غير محدود.
3/ السرية (security).
4/ التوسع (scalablitity).
5/ التعامل مع الفشل (failure handling).
6/ التزامن (conurrency).
7/ الشفافية (transparency).

## التطبيقات الموزعة

التطبيق الموزع هو تطبيق مكون من أكثر من مكون يمكن نشرها بشكل مستقل وعلى آلات مختلفة مرتبطة بشبكة، وتتخاطب فيما بينها باستعمال البرمجيات الوسيطة. يتألف التطبيق الموزع من طبقتين هما تطبيقات مخدم والمستخدم) أو من ثلاث طبقات هي تطبيقات زبون والبرمجيات الوسيطة والمخدم أو من عدة طبقات هي الزبون وعدة برمجيات وسيطة وعدة مخدمات.

### حسنات التطبيق الموزع

هناك بعض التطبيقات التي تفرض على المستخدم أن تكون موزعة (جغرافياً: مثل فروع بنك معين) يوجد العديد من الأسباب التي نحتاج من أجلها التطبيقات الموزعة:
* حاجة المؤسسات إلى مكاملة التطبيقات القديمة بتطبيقات جديدة، وذلك لأن التكنولوجيا عمرها قصير، أي خمس سنوات تقريباً، لذا تلجأ المؤسسات إلى التغيير التدريجي بدلاً من التغيير الجذري.
* مكاملة تطبيقات تعمل بلغات برمجة وتعمل على آلات مختلفة بمنصات عمل مختلفة (نظم تشغيل مختلفة).
* تحقيق الأمن.
* السماح بتوزيع العبء بين مجموعة من الآلات بوقت التنفيذ مما يسمح للمخدم بالتجاوب بسرعة.
* تأمين توزيع جغرافي للتطبيق يتناسب مع التوزيع الجغرافي للمستخدمين.
* جعل البرمجيات في متناول المستخدمين داخل وخارج المؤسسة.

## انظر أيضا

* حوسبة شبكية
* اتصالية

## مراجع

* ↑ معجم البيانات والذكاء الاصطناعي (PDF) (بالعربية والإنجليزية)، الهيئة السعودية للبيانات والذكاء الاصطناعي، 2022، ص. 64، QID:Q111421033
* ↑ Coulouris, George; Jean Dollimore; Tim Kindberg; Gordon Blair (2011). Distributed Systems: Concepts and Design (5th Edition). Boston: Addison-Wesley. ISBN 0-13-214301-1
* ↑ Lynch (1996), p. 1
* ↑ Ghosh (2007), p. 10.
* ↑ Andrews (2000), p. 8–9, 291. Dolev (2000), p. 5. Ghosh (2007), p. 3. Lynch (1996), p. xix, 1. Peleg (2000), p. xv.
* ↑ Andrews (2000), p. 291. Ghosh (2007), p. 3. Peleg (2000), p. 4.
* ↑ Elmasri & Navathe (2000), Section 24.1.2.
* بوابة تقانة المعلومات
* بوابة علم الحاسوب