بروتوكول استدعاء الإجراء البعيد (RPC) في النظام الموزع

⚡ ملخص ذكي

يُعد استدعاء الإجراء عن بعد (RPC) بروتوكول اتصال بين العمليات يسمح للبرنامج بتنفيذ إجراء في مساحة عنوان أو جهاز آخر، مع إخفاء تفاصيل الشبكة خلف استدعاء دالة محلية عادية في أنظمة العميل والخادم الموزعة.

  • 📞 فريف: تتيح تقنية RPC للعميل استدعاء إجراء على خادم بعيد كما لو كان استدعاءً محليًا.
  • 🗂️ الأنواع: تختلف طرق استدعاء الإجراءات عن بعد (RPC) في كيفية توجيه الطلبات ووضعها في قائمة الانتظار، سواء كانت استدعاءات رد الاتصال أو البث أو وضع الدفعات.
  • ؟؟؟؟ ️ الهندسة المعمارية: تتعاون خمسة أجزاء في كل مكالمة: العميل، وواجهة العميل، ووقت تشغيل RPC، وواجهة الخادم، والخادم.
  • 🔄 كيف يعمل: تقوم الدوال الوهمية بتحويل المعلمات إلى رسالة وفك تشفير النتيجة التي يتم إرجاعها إلى المتصل.
  • 🇧🇷 المفاضلات: تعمل تقنية RPC على تبسيط التعليمات البرمجية الموزعة ولكنها تضيف عبئًا على الشبكة ونقاط فشل مقارنةً بالمكالمات المحلية.
  • 🤖 زاوية الذكاء الاصطناعي: يقوم gRPC بتوفير نماذج التعلم الآلي بين الخدمات المصغرة، ويعمل Copilot على تسريع كتابة RPC stubs.

استدعاء الإجراءات عن بعد (RPC) في الأنظمة الموزعة

ما هو RPC؟

استدعاء الإجراء البعيد (ريك) هو اتصال interprocess تقنية تُستخدم في تطبيقات العميل والخادم. الاختصار RPC هو اختصار لـ Remote Procedure Call (استدعاء الإجراء عن بُعد). تُستخدم آليات RPC عندما يتسبب برنامج حاسوبي في تنفيذ إجراء أو روتين فرعي في مساحة عنوان مختلفة، مُبرمجة كاستدعاء إجراء عادي دون أن يُحدد المبرمج تفاصيل التفاعل عن بُعد بشكل صريح.

كما يقوم هذا الإجراء بإدارة بروتوكولات النقل منخفضة المستوى، مثل UDP و TCP/IP، لنقل بيانات الرسائل بين البرامج.

أنواع RPC

ثلاثة أنواع من RPC هي:

  • رد الاتصال RPC
  • بث RPC
  • RPC في الوضع الدفعي

رد الاتصال RPC

يُمكّن هذا النوع من بروتوكول استدعاء الإجراءات عن بُعد (RPC) من إنشاء نموذج اتصال مباشر بين العمليات المشاركة، مما يسمح للعملية بالعمل كعميل وخادم في آن واحد.

وظائف رد الاتصال RPC:

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

بث RPC

يُعد طلب RPC للبث طلبًا من العميل يتم بثه على الشبكة ومعالجته بواسطة جميع الخوادم التي لديها طريقة لمعالجة هذا الطلب.

وظائف البث RPC:

  • يسمح لك بتحديد أنه يجب بث رسالة طلب العميل.
  • يمكنك إعلان منافذ البث.
  • يساعد ذلك على تقليل الحمل على الشبكة المادية.

RPC في الوضع الدفعي

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

وظائف وضع الدفعات في RPC:

  • يقلل ذلك من العبء الإضافي المتضمن في إرسال الطلب، حيث يرسل الطلبات عبر الشبكة في دفعة واحدة إلى الخادم.
  • هذا النوع من بروتوكول RPC فعال فقط للتطبيقات التي تحتاج إلى معدلات استدعاء منخفضة.
  • يحتاج إلى بروتوكول نقل موثوق.

RPC Architecture

يشتمل هندسة RPC على خمسة مكونات أساسية للبرنامج:

  1. العميل
  2. كعب العميل
  3. وقت تشغيل RPC
  4. كعب الخادم
  5. المخدم

RPC Architecture

RPC Architecture

كيف يعمل RPC؟

تتم الخطوات التالية خلال عملية RPC:

الخطوة 1) يتم تنفيذ العميل، وواجهة العميل، ونسخة واحدة من وقت تشغيل RPC على جهاز العميل.

الخطوة 2) يبدأ العميل عملية وسيطة (stubl) بتمرير المعاملات بالطريقة المعتادة. تُخزَّن هذه العملية الوسيطة ضمن مساحة عنوان العميل نفسه. كما يطلب العميل من بيئة تشغيل RPC المحلية إرسال الطلب إلى عملية وسيطة الخادم (server stub).

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

الخطوة 4) بعد إتمام إجراء الخادم، يعود التنفيذ إلى وحدة الخادم الفرعية، التي تقوم بتجميع (تنسيق) القيم المُعادة في رسالة. ثم تُرسل وحدة الخادم الفرعية الرسالة مرة أخرى إلى طبقة النقل.

الخطوة 5) في هذه الخطوة، تقوم طبقة النقل بإرسال رسالة النتيجة مرة أخرى إلى طبقة نقل العميل، والتي بدورها تعيد الرسالة إلى العميل.

الخطوة 6) في هذه المرحلة، يقوم برنامج العميل بفك تشفير (فك تغليف) معلمات الإرجاع في الحزمة الناتجة، ويعود التنفيذ إلى المتصل.

خصائص RPC

فيما يلي الخصائص الأساسية لـ RPC:

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

مميزات RPC

فيما يلي الميزات المهمة لـ RPC:

  • صيغة استدعاء بسيطة.
  • يقدم دلالات معروفة.
  • يوفر واجهة محددة جيدًا.
  • يمكنه التواصل بين العمليات على نفس الجهاز أو على أجهزة مختلفة.

مزايا RPC

فيما يلي مزايا وفوائد RPC:

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

عيوب RPC

فيما يلي سلبيات/عيوب استخدام RPC:

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

الأسئلة الشائعة

يُتيح بروتوكول RPC تنفيذ الإجراءات عن بُعد، بينما يُتيح بروتوكول REST الوصول إلى البيانات كموارد يتم الوصول إليها عبر بروتوكول HTTP. يُشبه بروتوكول RPC استدعاء دالة محلية، بينما يركز بروتوكول REST على الموارد والحالة.

gRPC هو Googleإطار عمل RPC حديث وعالي الأداء. يستخدم بروتوكول HTTP/2 وبروتوكول Buffers، ويدعم البث ثنائي الاتجاه، مما يجعله شائعًا في اتصالات الخدمات المصغرة.

يمكن أن يكون RPC متزامنًا وغير متزامن. فالاستدعاء المتزامن يُوقف الاستجابة حتى يُعيد الخادم النتيجة، بينما يُعيد الاستدعاء غير المتزامن الاستجابة فورًا ويتعامل معها لاحقًا. وتدعم أُطر عمل مثل gRPC كلا النمطين.

يُعدّ RPC أحد أشكال الاتصال بين العمليات (IPC) الذي يعمل عبر أجهزة منفصلة. فبينما تتشارك العديد من طرق الاتصال بين العمليات الذاكرة على جهاز مضيف واحد، يتبادل RPC الرسائل عبر الشبكة، مما يسمح للعمليات على أجهزة كمبيوتر مختلفة بالتعاون.

تشمل تطبيقات RPC الشائعة gRPC و Apache Thrift و XML-RPC و JSON-RPC و Java RMI. تختلف هذه التقنيات في تنسيق البيانات والنقل، لكنها جميعًا تسمح للعميل باستدعاء إجراء على خادم بعيد.

لا تُعتبر بروتوكولات RPC آمنة بشكل افتراضي؛ إذ يعتمد أمانها على وسيلة النقل. وتضيف التطبيقات تشفير TLS ورموز المصادقة وضوابط الوصول لحماية المكالمات.

تستخدم منصات التعلم الآلي بروتوكول RPC، وخاصة gRPC، لتقديم تنبؤات النماذج بين الخدمات المصغرة. يرسل العميل الميزات ويتلقى نتيجة الاستدلال، ويحتفظ بـping أنظمة الذكاء الاصطناعي سريعة ومترابطة بشكل غير محكم.

نعم. يمكن لـ GitHub Copilot إنشاء تعريفات خدمات .proto، ونماذج العميل، ومعالجات الخادم لـ gRPC. مع ذلك، ينبغي على المطورين مراجعة الواجهات المُنشأة، ومعالجة الأخطاء، والتحكم في الإصدارات قبل النشر في بيئة الإنتاج.

تلخيص هذه التدوينة بـ: