वितरित सिस्टम में रिमोट प्रोसीजर कॉल (RPC) प्रोटोकॉल

⚡ स्मार्ट सारांश

रिमोट प्रोसीजर कॉल (आरपीसी) एक इंटरप्रोसेस संचार प्रोटोकॉल है जो किसी प्रोग्राम को किसी अन्य एड्रेस स्पेस या मशीन में एक प्रोसीजर को निष्पादित करने की अनुमति देता है, वितरित क्लाइंट-सर्वर सिस्टम में एक साधारण स्थानीय फ़ंक्शन कॉल के पीछे नेटवर्क विवरण को छुपाता है।

  • 📞 परिभाषा: RPC क्लाइंट को रिमोट सर्वर पर किसी प्रोसीजर को इस तरह से कॉल करने की अनुमति देता है जैसे कि वह लोकल कॉल हो।
  • प्रकार: कॉलबैक, ब्रॉडकास्ट और बैच-मोड आरपीसी में अनुरोधों को रूट करने और कतार में रखने के तरीके अलग-अलग होते हैं।
  • 🏗️ Archiटेक्चर: प्रत्येक कॉल में पांच भाग सहयोग करते हैं: क्लाइंट, क्लाइंट स्टब, आरपीसी रनटाइम, सर्वर स्टब और सर्वर।
  • 🔄 यह कैसे काम करता है: स्टब्स पैरामीटर को एक संदेश में व्यवस्थित करते हैं और परिणाम को कॉलर को वापस भेज देते हैं।
  • व्यापार बंद: RPC वितरित कोड को सरल बनाता है लेकिन स्थानीय कॉल की तुलना में नेटवर्क ओवरहेड और विफलता बिंदुओं को बढ़ाता है।
  • 🤖 एआई का दृष्टिकोण: gRPC माइक्रोसेवाओं के बीच मशीन लर्निंग मॉडल को सेवा प्रदान करता है, और कोपायलट RPC स्टब्स लिखने की प्रक्रिया को गति देता है।

वितरित प्रणाली में रिमोट प्रोसीजर कॉल (आरपीसी)

आरपीसी क्या है?

दूरस्थ प्रक्रिया कॉल (आरपीसी) है एक अंतःप्रक्रम संचार क्लाइंट-सर्वर अनुप्रयोगों के लिए उपयोग की जाने वाली तकनीक। RPC का पूरा नाम रिमोट प्रोसीजर कॉल है। RPC तंत्र का उपयोग तब किया जाता है जब कोई कंप्यूटर प्रोग्राम किसी प्रक्रिया या सबरूटीन को किसी भिन्न एड्रेस स्पेस में निष्पादित करने का कारण बनता है, जिसे सामान्य प्रक्रिया कॉल के रूप में कोडित किया जाता है, बिना प्रोग्रामर द्वारा रिमोट इंटरैक्शन के विवरण को स्पष्ट रूप से कोडित किए।

यह प्रक्रिया कॉल निम्न-स्तरीय परिवहन प्रोटोकॉल, जैसे कि यूडीपी और टीसीपी/आईपी, को भी प्रबंधित करती है, ताकि प्रोग्रामों के बीच संदेश डेटा का परिवहन किया जा सके।

आर.पी.सी. के प्रकार

आर.पी.सी. के तीन प्रकार हैं:

  • कॉलबैक RPC
  • प्रसारण आरपीसी
  • बैच-मोड RPC

कॉलबैक RPC

इस प्रकार का आरपीसी सहभागी प्रक्रियाओं के बीच पीयर-टू-पीयर (पी2पी) प्रतिमान को सक्षम बनाता है। यह एक प्रक्रिया को क्लाइंट और सर्वर दोनों के रूप में कार्य करने में मदद करता है।

कॉलबैक RPC के कार्य:

  • दूरस्थ रूप से संसाधित, इंटरैक्टिव एप्लिकेशन समस्याओं को संभालता है।
  • सर्वर को क्लाइंट का हैंडल प्रदान करता है।
  • कॉलबैक क्लाइंट प्रक्रिया को प्रतीक्षा कराता है।
  • कॉलबैक डेडलॉक का प्रबंधन करता है।
  • यह सहभागी प्रक्रियाओं के बीच सहकर्मी-से-सहकर्मी प्रतिमान को सुगम बनाता है।

प्रसारण आरपीसी

ब्रॉडकास्ट आरपीसी एक क्लाइंट का अनुरोध है जिसे नेटवर्क पर प्रसारित किया जाता है और उन सभी सर्वरों द्वारा संसाधित किया जाता है जिनके पास उस अनुरोध को संसाधित करने की विधि होती है।

प्रसारण आरपीसी के कार्य:

  • यह आपको यह निर्दिष्ट करने की अनुमति देता है कि क्लाइंट के अनुरोध संदेश को प्रसारित किया जाना चाहिए।
  • आप प्रसारण पोर्ट घोषित कर सकते हैं.
  • इससे फिजिकल नेटवर्क पर लोड कम करने में मदद मिलती है।

बैच-मोड RPC

बैच-मोड आरपीसी क्लाइंट साइड पर एक ट्रांसमिशन बफर में अलग-अलग आरपीसी अनुरोधों को कतारबद्ध करने में मदद करता है, और फिर उन्हें एक ही बैच में नेटवर्क के माध्यम से सर्वर पर भेजता है।

बैच-मोड आरपीसी के कार्य:

  • यह अनुरोध भेजने में लगने वाले अतिरिक्त भार को कम करता है, क्योंकि यह अनुरोधों को नेटवर्क पर एक साथ सर्वर को भेजता है।
  • इस प्रकार का आरपीसी प्रोटोकॉल केवल उन अनुप्रयोगों के लिए कारगर है जिन्हें कम कॉल दरों की आवश्यकता होती है।
  • इसके लिए एक विश्वसनीय ट्रांसमिशन प्रोटोकॉल की आवश्यकता है।

आरपीसी Archiटेक्चर

RPC आर्किटेक्चर में मुख्य रूप से कार्यक्रम के पांच घटक होते हैं:

  1. ग्राहक
  2. क्लाइंट स्टब
  3. आरपीसी रनटाइम
  4. सर्वर स्टब
  5. सर्वर

आरपीसी Archiटेक्चर

आरपीसी Archiटेक्चर

आरपीसी कैसे काम करता है?

आरपीसी प्रक्रिया के दौरान निम्नलिखित चरण घटित होते हैं:

चरण 1) क्लाइंट, क्लाइंट स्टब और आरपीसी रनटाइम का एक इंस्टेंस क्लाइंट मशीन पर चलता है।

चरण 2) क्लाइंट सामान्य तरीके से पैरामीटर पास करके क्लाइंट स्टब प्रोसेस शुरू करता है। क्लाइंट स्टब क्लाइंट के अपने एड्रेस स्पेस में स्टोर होता है। यह लोकल RPC रनटाइम से सर्वर स्टब को रिक्वेस्ट भेजने का अनुरोध भी करता है।

चरण 3) इस चरण में, उपयोगकर्ता एक सामान्य लोकल प्रोसीजर कॉल करके RPC का उपयोग करता है। RPC रनटाइम नेटवर्क पर क्लाइंट और सर्वर के बीच संदेशों के संचरण का प्रबंधन करता है। यह पुनः संचरण, स्वीकृति, रूटिंग और एन्क्रिप्शन का कार्य भी करता है।

चरण 4) सर्वर प्रक्रिया पूरी होने के बाद, निष्पादन सर्वर स्टब पर लौटता है, जो प्राप्त मानों को एक संदेश में पैक (मार्शल) करता है। फिर सर्वर स्टब संदेश को वापस ट्रांसपोर्ट लेयर को भेज देता है।

चरण 5) इस चरण में, परिवहन परत परिणाम संदेश को क्लाइंट परिवहन परत को वापस भेजती है, जो संदेश को क्लाइंट स्टब को लौटा देती है।

चरण 6) इस चरण में, क्लाइंट स्टब परिणामी पैकेट में रिटर्न पैरामीटर को डीमार्शल (अनपैक) करता है, और निष्पादन कॉलर को वापस लौट जाता है।

आर.पी.सी. की विशेषताएं

आरपीसी की आवश्यक विशेषताएं इस प्रकार हैं:

  • जिस प्रक्रिया को कॉल किया जा रहा है वह किसी अन्य प्रक्रिया में है, जो संभवतः किसी अन्य मशीन पर स्थित है।
  • प्रक्रियाएं पता स्थान साझा नहीं करती हैं।
  • पैरामीटर केवल मानों द्वारा पारित किये जाते हैं।
  • RPC सर्वर प्रक्रिया के वातावरण के भीतर निष्पादित होती है।
  • यह कॉलिंग प्रक्रिया के वातावरण तक पहुंच प्रदान नहीं करता है।

आरपीसी की विशेषताएं

आरपीसी की महत्वपूर्ण विशेषताएं इस प्रकार हैं:

  • सरल कॉल सिंटैक्स।
  • ज्ञात अर्थों की पेशकश करता है।
  • एक सुव्यवस्थित इंटरफ़ेस प्रदान करता है।
  • यह एक ही या अलग-अलग मशीनों पर चल रही प्रक्रियाओं के बीच संवाद कर सकता है।

आर.पी.सी. के लाभ

आरपीसी के फायदे/लाभ इस प्रकार हैं:

  • आरपीसी उच्च-स्तरीय भाषाओं में प्रक्रिया कॉल के पारंपरिक उपयोग के माध्यम से क्लाइंट को सर्वर के साथ संवाद करने में मदद करता है।
  • आरपीसी को लोकल प्रोसीजर कॉल के आधार पर तैयार किया गया है, लेकिन कॉल की गई प्रोसीजर को संभवतः एक अलग प्रोसेस में और आमतौर पर एक अलग कंप्यूटर पर निष्पादित किया जाता है।
  • RPC प्रक्रिया-उन्मुख और थ्रेड-उन्मुख मॉडल का समर्थन करता है।
  • RPC आंतरिक संदेश-संचरण तंत्र को उपयोगकर्ता से छिपा देता है।
  • यह प्रदर्शन में सुधार के लिए कई प्रोटोकॉल परतों को प्रतिबद्ध करता है।
  • आरपीसी एब्स प्रदान करता हैtracउदाहरण के लिए, नेटवर्क संचार की संदेश-संग्रह प्रकृति उपयोगकर्ता से छिपी रहती है।
  • आरपीसी का उपयोग वितरित और स्थानीय दोनों वातावरणों में किया जा सकता है।
  • कोड को दोबारा लिखने और विकसित करने के लिए आवश्यक प्रयास न्यूनतम है।

आर.पी.सी. के नुकसान

RPC का उपयोग करने के नुकसान/कमी इस प्रकार हैं:

  • रिमोट प्रोसीजर कॉल में पैरामीटर केवल मानों द्वारा ही पास किए जाते हैं; पॉइंटर (रेफरेंस) मानों की अनुमति नहीं है।
  • दूरस्थ प्रक्रियाओं में कॉल (और रिटर्न) का समय - अतिरिक्त लागत - स्थानीय प्रक्रियाओं की तुलना में काफी अधिक होती है।
  • यह तंत्र विफलता के प्रति अत्यधिक संवेदनशील है, क्योंकि इसमें एक संचार प्रणाली, एक अन्य मशीन और एक अन्य प्रक्रिया शामिल है।
  • आरपीसी अवधारणा को अलग-अलग तरीकों से लागू किया जा सकता है, इसलिए इसका कोई एक मानक नहीं है।
  • यह हार्डवेयर आर्किटेक्चर के लिए लचीलापन प्रदान नहीं करता है, क्योंकि यह ज्यादातर अंतःक्रिया-आधारित है।
  • रिमोट प्रोसीजर कॉल के कारण प्रक्रिया की लागत बढ़ जाती है।

अक्सर पूछे जाने वाले प्रश्न

RPC क्रियाओं को रिमोट प्रक्रियाओं के रूप में प्रदर्शित करता है, जबकि REST डेटा को HTTP वर्ब्स के माध्यम से एक्सेस किए जाने वाले संसाधनों के रूप में प्रदर्शित करता है। RPC किसी स्थानीय फ़ंक्शन को कॉल करने जैसा लगता है; REST संसाधनों और स्थिति पर केंद्रित होता है।

gRPC गूगल का आधुनिक, उच्च-प्रदर्शन वाला RPC फ्रेमवर्क है। यह HTTP/2 और प्रोटोकॉल का उपयोग करता है। Bufferयह द्विदिशात्मक स्ट्रीमिंग का समर्थन करता है, जिससे यह माइक्रोसर्विस संचार के लिए लोकप्रिय हो जाता है।

RPC दोनों प्रकार का हो सकता है। एक सिंक्रोनस कॉल तब तक रुका रहता है जब तक सर्वर परिणाम नहीं लौटा देता, जबकि एक असिंक्रोनस कॉल तुरंत वापस आ जाता है और प्रतिक्रिया को बाद में संभालता है। gRPC जैसे फ्रेमवर्क दोनों शैलियों का समर्थन करते हैं।

RPC, IPC का एक रूप है जो अलग-अलग मशीनों पर काम करता है। जबकि कई IPC विधियाँ एक ही होस्ट पर मेमोरी साझा करती हैं, RPC नेटवर्क पर संदेशों का आदान-प्रदान करता है ताकि विभिन्न कंप्यूटरों पर प्रक्रियाएँ सहयोग कर सकें।

सामान्य RPC कार्यान्वयनों में gRPC, Apache Thrift, XML-RPC, JSON-RPC, और शामिल हैं। Java RMI. इनमें डेटा फॉर्मेट और ट्रांसपोर्ट के तरीके अलग-अलग होते हैं, लेकिन ये सभी क्लाइंट को रिमोट सर्वर पर किसी प्रोसीजर को कॉल करने की अनुमति देते हैं।

RPC डिफ़ॉल्ट रूप से सुरक्षित नहीं है; सुरक्षा ट्रांसपोर्ट पर निर्भर करती है। कार्यान्वयन कॉल को सुरक्षित करने के लिए TLS एन्क्रिप्शन, प्रमाणीकरण टोकन और एक्सेस कंट्रोल जोड़ते हैं।

मशीन लर्निंग प्लेटफॉर्म माइक्रोसेवाओं के बीच मॉडल भविष्यवाणियों को पहुंचाने के लिए RPC, विशेष रूप से gRPC का उपयोग करते हैं। एक क्लाइंट फ़ीचर भेजता है और एक अनुमान परिणाम प्राप्त करता है, जिसे वह आगे बढ़ाता है।ping एआई सिस्टम तेज और शिथिल रूप से युग्मित होते हैं।

जी हां। GitHub Copilot gRPC के लिए .proto सेवा परिभाषाएँ, क्लाइंट स्टब्स और सर्वर हैंडलर तैयार कर सकता है। डेवलपर्स को उत्पादन में तैनात करने से पहले जेनरेट किए गए इंटरफेस, त्रुटि प्रबंधन और वर्ज़निंग की समीक्षा अवश्य कर लेनी चाहिए।

इस पोस्ट को संक्षेप में इस प्रकार लिखें: