Professional Documents
Culture Documents
اتصال interprocess
اتصال interprocess
اتصال interprocess
كيف تتمكن األنظمة الموزعة من العمل بسالسة ،على الرغم من انتشارها عبر أجهزة وشبكات مختلفة؟
اسمحوا لنا أن نعرف كيف يساعد االتصال بين العمليات ( - )IPCاالتصال بين العمليات -األنظمة الموزعة على التحدث
ومشاركة الموارد وتنسيق األنشطة عبر األجهزة المختلفة.
ما هي العملية؟
تشير العملية إلى برنامج أو تطبيق يتم تشغيله على جهاز كمبيوتر أو خادم ويكون قادًر ا على تنفيذ المهام أو العمليات .في
النظام الموزع ،تحتاج هذه العمليات إلى التواصل مع بعضها البعض لمشاركة البيانات وتنسيق األنشطة وتنفيذ المهام المعقدة
التي تتطلب التعاون عبر أنظمة متعددة.
بدون ،IPCستكون كل عملية معزولة وغير قادرة على التواصل مع اآلخرين ،مما يحد من قدرة النظام على العمل بكفاءة.
يسمح IPCللعمليات بمشاركة المعلومات والموارد ،مما قد يؤدي إلى تحسين أداء النظام وقابلية التوسع .على سبيل المثال ،قد
يحتاج خادم الويب إلى االتصال بخادم قاعدة البيانات السترداد البيانات لطلب المستخدم.
الذاكرة المشتركة
الذاكرة المشتركة هي نوع من آليات االتصال بين العمليات حيث يمكن لعمليات متعددة الوصول إلى نفس مساحة عنوان
الذاكرة االفتراضية.
توفر هذه اآللية اتصاًال عالي السرعة وحماًل منخفًض ا ألنها تلغي الحاجة إلى نسخ البيانات .يمكن للعمليات التواصل مع
بعضها البعض عن طريق القراءة والكتابة إلى مواقع الذاكرة المشتركة.
ومع ذلك ،تتطلب الذاكرة المشتركة مزامنة دقيقة لتجنب التعارضات بين العمليات .عندما تصل عمليات متعددة إلى نفس موقع
الذاكرة في نفس الوقت ،يمكن أن تحدث حاالت سباق ،مما يؤدي إلى سلوك غير متوقع.
ولذلك ،يتم استخدام آليات المزامنة مثل األقفال واإلشارات والحواجز لضمان وصول عملية واحدة فقط إلى موقع الذاكرة
المشتركة في المرة الواحدة.
يمكن تنفيذ الذاكرة المشتركة بطرق مختلفة ،مثل استخدام مقطع ذاكرة مشتركة مخصص ،أو استخدام ملفات الذاكرة المعينة،
أو استخدام تقنيات الذاكرة االفتراضية .في مقطع الذاكرة المشتركة المخصص ،يتم إنشاء مقطع منفصل من الذاكرة يمكن
الوصول إليه من خالل عمليات متعددة .في الملفات المعينة للذاكرة ،يتم تعيين ملف في مساحة الذاكرة لكل عملية ،مما يسمح
لها بمشاركة نفس محتويات الملف .في تقنيات الذاكرة االفتراضية ،يقوم نظام التشغيل بإدارة تعيين الذاكرة بين العمليات.
يعتمد اختيار التنفيذ على متطلبات النظام.
ُت ستخدم الذاكرة المشتركة غالًبا في تطبيقات الحوسبة عالية األداء ،حيث تحتاج العمليات المتعددة إلى مشاركة كميات كبيرة
من البيانات بسرعة وكفاءة .يتم استخدامه أيًض ا في التطبيقات متعددة الخيوط ،حيث تشترك عدة خيوط في نفس الشيء.
مساحة الذاكرة .ومع ذلك ،فإن الذاكرة المشتركة ليست مناسبة لألنظمة الموزعة ،حيث يتم تشغيل العمليات على عقد مختلفة
وال يمكنها الوصول إلى نفس مساحة الذاكرة الفعلية.
تمرير الرسالة
في هذه اآللية ،تقوم العمليات بإرسال واستقبال رسائل تحتوي على بيانات للتواصل مع بعضها البعض.
هناك نوعان رئيسيان من تمرير الرسائل :متزامن وغير متزامن .في تمرير الرسائل المتزامنة ،يتم حظر عملية اإلرسال حتى
يتلقى المتلقي الرسالة .في تمرير الرسائل غير المتزامنة ،ال يتم حظر عملية اإلرسال ويمكن االستمرار في تنفيذها أثناء
إرسال الرسالة.
تنتظر دورك للتحدث ،وال تواصل المحادثة إال عندما يقر الشخص اآلخر بأنه قد تلقى رسالتك .يضمن هذا األسلوب أن تستمر
المحادثة بطريقة منظمة ،ولكنه يمكن أيًض ا أن يبطئ المحادثة ويسبب اإلحباط إذا استغرق الشخص اآلخر وقًت ا طويًال للرد.
من ناحية أخرى ،يشبه تمرير الرسائل غير المتزامنة إجراء محادثة غير رسمية حيث يمكنك قول شيء ما لبعض األشخاص
ثم االنتقال للتحدث مع اآلخرين ،دون انتظار ردهم على الفور .يسمح لك هذا األسلوب بإجراء محادثات أكثر ديناميكية مع
عدة أشخاص في وقت واحد ،ولكنه قد يؤدي أيًض ا إلى سوء الفهم إذا فات شخص ما جزًءا من المحادثة أو إذا كان هناك عدد
كبير جًد ا من األشخاص يتحدثون في وقت واحد.
في األنظمة الموزعة ،يكون تمرير الرسائل المتزامن مفيًد ا عندما تحتاج إلى التأكد من تسليم الرسائل بشكل موثوق ومزامنة
العمليات مع بعضها البعض .يعد تمرير الرسائل غير المتزامنة مفيًد ا عندما تريد التحسين
األداء وقابلية التوسع من خالل السماح للعمليات بمواصلة التنفيذ بشكل مستقل أثناء تواصلها مع بعضها البعض.
يمكن تنفيذ تمرير الرسائل باستخدام بروتوكوالت اتصال مختلفة وواجهات برمجة التطبيقات ( .)APIsإحدى واجهات برمجة
التطبيقات شائعة االستخدام لتمرير الرسائل هي واجهة تمرير الرسائل ( ،)MPIوالتي توفر طريقة قياسية للعمليات للتواصل
مع بعضها البعض باستخدام الرسائل.
يمكن استخدام MPIلتنفيذ مجموعة واسعة من التطبيقات المتوازية والموزعة ،مثل المحاكاة العلمية ،وتحليالت البيانات،
والتعلم اآللي .يتم استخدام MPIعلى نطاق واسع في بيئات الحوسبة عالية األداء ،حيث تكون أنظمة الذاكرة الموزعة شائعة.
ومع ذلك ،فإن تمرير الرسائل له أيًض ا بعض العيوب .أحد العيوب الرئيسية هو أنه يمكن أن يكون له حمل مرتفع بسبب
الحاجة إلى إجراء تسلسل للبيانات وإلغاء تسلسلها .باإلضافة إلى ذلك ،يمكن أن يكون تمرير الرسائل أكثر تعقيًد ا في التنفيذ من
الذاكرة المشتركة بسبب الحاجة إلى إدارة بروتوكوالت االتصال وضمان التزامن بين العمليات.
استدعاء اإلجراء البعيد ()RPC
استدعاء اإلجراء عن بعد ( )RPCهو آلية شائعة تستخدم في األنظمة الموزعة لتمكين عملية واحدة من استدعاء إجراء أو
وظيفة في عملية أخرى ،موجودة على جهاز بعيد .يلخص RPCتفاصيل االتصال ويسهل على المطورين كتابة التطبيقات
الموزعة ،حيث يمكنهم التعامل مع استدعاءات اإلجراءات عن بعد مثل المكالمات المحلية.
في ، RPCيرسل المتصل رسالة طلب تحتوي على اسم اإلجراء الذي سيتم تنفيذه ووسائطه إلى العملية البعيدة .تقوم العملية
عن بعد بتنفيذ اإلجراء وإرجاع النتيجة إلى المتصل .يقوم المتصل بحظر حتى يتم استالم النتيجة .يوفر RPCواجهة بسيطة
وسهلة االستخدام للمطورين الستدعاء اإلجراءات عبر العمليات ،دون االضطرار إلى التعامل مع تعقيدات اتصاالت الشبكة.
يتمتع RPCببعض المزايا مقارنة بآليات االتصال األخرى بين العمليات .أوًال ،يوفر مستوى عاٍل من التجريد ،مما يسهل على
المطورين كتابة التطبيقات الموزعة .ثانًيا ،يمكن استخدامه لتوفير شفافية الموقع ،مما يسمح للعمالء باستدعاء اإلجراءات عن
بعد كما لو كانت إجراءات محلية .وأخيًر ا ،يوفر التنظيم التلقائي للوسائط وإلغاء تنظيمها ،مما يسهل التعامل مع تبادل البيانات
بين العمليات.
ومع ذلك RPC ،لديه أيًض ا بعض العيوب .أوًال ،يمكنها تقديم حمل عالي للشبكة ،خاصة إذا تم إجراء العديد من عمليات RPCs
الصغيرة .ثانًيا ،قد يكون من الصعب ضمان التسامح مع الخطأ والموثوقية في األنظمة المستندة إلى ،RPCحيث قد يؤدي
الفشل في العملية عن بعد إلى توقف المتصل أو تلقي نتائج غير صحيحة .وأخيًر ا ،قد يكون من الصعب ضمان األمان في
األنظمة المستندة إلى ،RPCحيث قد يتم استدعاء اإلجراءات عن بعد بواسطة عمالء غير مصرح لهم.
الوصول المباشر للذاكرة عن بعد ( - )RDMAنحو اتصال فعال بين العمليات في األنظمة الموزعة
في األساس ،يسمح RDMAللعمليات التي تعمل على أجهزة مختلفة بالوصول مباشرة إلى ذاكرة بعضها البعض دون الحاجة
إلى استخدام وحدة المعالجة المركزية أو نواة نظام التشغيل .يؤدي هذا إلى التخلص من الحمل المرتبط بطرق االتصال
التقليدية بين العمليات مثل االتصال القائم على مأخذ التوصيل أو تمرير الرسائل أو الذاكرة المشتركة
يعمل RDMAعلى تسهيل حركة البيانات بشكل مباشر وفعال أكثر من وإلى الخادم من خالل تنفيذ بروتوكول نقل في بطاقة
واجهة الشبكة ( )NICالموجودة على كل جهاز اتصال .على سبيل المثال ،يمكن تكوين جهازي كمبيوتر متصلين بالشبكة
باستخدام بطاقة NICالتي تدعم بروتوكول RDMAعبر بروتوكول Ethernetالمتقارب ( ،)RoCEمما يمّك ن أجهزة
الكمبيوتر من تنفيذ االتصاالت المستندة إلى .RoCE
يوفر استخدام االتصاالت المستندة إلى RDMAومكتبة FastRPCالعديد من الفوائد ،بما في ذلك تقليل حمل االتصاالت
وتحسين قابلية التوسع وخفض زمن الوصول مقارنة بطرق االتصال التقليدية .كما أن اآللية مرنة ويمكن تكييفها مع
سيناريوهات التطبيق المختلفة ،مثل قواعد البيانات الموزعة ،والتعلم اآللي الموزع ،والحوسبة عالية األداء.
العوامل في اللعب
من الواضح أن بروتوكوالت الشبكة ولغات البرمجة وهندسة األجهزة تلعب دوًر ا حاسًما في أداء األنظمة الموزعة.
يمكن أن يؤثر نوع بروتوكول الشبكة المستخدم ،مثل TCPأو UDPأو ،RDMAبشكل كبير على أداء .IPCعلى الرغم من
أن بروتوكول TCPيوفر تسليًما موثوًقا ومنظًم ا للرسائل ،إال أنه يمكن أن يعاني من زمن الوصول العالي والحمل الزائد .من
ناحية أخرى ،يوفر UDPتسليًم ا أسرع للرسائل ،ولكن من المحتمل أن يكون غير موثوق به ،في حين أن RDMAهو
بروتوكول أحدث يتيح النقل المباشر للبيانات بين مخازن الذاكرة المؤقتة على أجهزة مختلفة.
تؤثر لغات البرمجة أيًض ا على تصميم IPCوتنفيذه .يوفر ++Cإدارة منخفضة المستوى للذاكرة والوصول إلى األجهزة ،مما
يجعله مثالًيا لألجهزة عالية المستوى
تطبيقات األداء .تعتبر ،Javaبفضل إدارتها التلقائية للذاكرة والتحقق القوي من النوع ،مناسبة تماًما لتطوير وصيانة األنظمة
الموزعة المعقدة .وفي الوقت نفسه ،فإن سهولة استخدام بايثون وقدرات التطوير السريع تجعلها خياًر ا شائًع ا للنماذج األولية
والتجريب في األنظمة الموزعة.
وأخيًر ا ،يمكن لبنيات األجهزة ،مثل المعالجات متعددة النواة والشبكات عالية األداء ،أن تؤثر أيًض ا على أداء .IPCتسمح
المعالجات متعددة النواة بالتنفيذ المتزامن لعمليات متعددة ،بينما يمكن للشبكات عالية األداء توفير اتصال سريع ومنخفض
الكمون بين األجهزة.