RPC چیست؟ — Remote Procedure Call — به زبان ساده
Remote Procedure Call که به اختصار RPC خطاب میشود، یک قاعده ارتباطی میان-پردازهای در حوزه سیستمهای توزیعیافته است که در کاربردهای کلاینت-سروری مورد استفاده قرار میگیرد. RPC پروتکلی است که به واسطه آن یک برنامه میتواند از برنامهای روی کامپیوتر دیگری در شبکه، بدون اطلاع از جزئیات آن شبکه، درخواست خدمت کند. علاوه بر «فراخوانی رویه راه دور» یا «فراخوانی روال راه دور» از عبارتهای «فراخوانی زیر روال» (Subroutine Call) و «فراخوانی تابع» (Function Call) نیز برای اشاره به پروتکل RPC استفاده میشود. در این مقاله به این سوال پاسخ داده شده است که RPC چیست و همچنین مفاهیم و موضوعات پیرامون پروتکل RPC شرح داده شدهاند. در ضمن به سوالات رایج در مورد RPC نیز پاسخ داده شده است.
RPC چیست ؟
RPC سرنامی برای عبارت «Remote Procedure Call» به معنی «فراخوانی رویه از راه دور» یک روش ارتباط میان پردازشی (Interprocess Communication | IPC) است که برای اپلیکیشنهای مبتنی بر کلاینت-سرور استفاده میشود. RPC برای فراخوانی پردازههای یک سیستم راه دور مورد استفاده قرار میگیرد، به طوری که گویی آن پردازهها روی سیستم محلی فراخوانی شده باشند. یک کلاینت، پیام درخواستی دارد که RPC آن را ترجمه و به سرور ارسال میکند. این درخواست ممکن است یک فراخوانی رویه (Procedure Call) یا فراخوانی تابع از یک سرور راه دور باشد. وقتی که سرور درخواست را دریافت میکند، پاسخ مورد نیاز را به کلاینت باز میگرداند.
در طول مدتی که سرور در حال پردازش فراخوانی است، کلاینت مسدود میشود و تنها پس از پایان کار سرور و دریافت پاسخ به کار خود ادامه خواهد داد. در واقع، مشابه یک فراخوانی رویه محلی (Local Procedure Call)، فرایند RPC نیز عملیاتی همزمان است و برنامه درخواست کننده باید تا زمان بازگرداندن نتایج رویه راه دور، معلق بماند. اگرچه، استفاده از پردازههای کم حجم یا Threadهایی که فضای آدرس یکسانی را به اشتراک میگذارند، امکان اجرای چند RPC به طور همزمان را به وجود میآورد.
RPC مخفف چیست ؟
RPC مخفف «Remote Procedure Call» به معنی «فراخوانی رویه از راه دور» است. کلمه «Procedure» در علوم کامپیوتر به بخشی از یک برنامه گفته میشود که وظیفه مشخصی را انجام میدهد. در یک برنامه میتوان از رویهها به طور مکرر استفاده کرد.
به عملیات RPC ، «فراخوانی زیر روال» (Subroutine Call) و «فراخوانی تابع» (Function Call) هم گفته میشود. بنابراین، میتوان گفت که مفاهیم Subroutine ،Procedure و Function تقریباً مشابه یکدیگر هستند و به یک مفهوم اشاره دارند یعنی: «قطعه برنامهای که کار خاصی را انجام میدهد». بنابراین، در RPC یک قطعه برنامه که وظیفه مشخصی را انجام میدهد از یک محل راه دور فراخوانی و درخواست میشود.
چه زمانی از RPC استفاده میشود؟
ساز و کار رویههای راه دور RPC زمانی به کار میروند که یک برنامه کامپیوتری موجب اجرای رویه یا زیرروالی در یک فضای آدرس متفاوت شود. انجام این کار به صورت یک فراخوانی رویه معمولی و بدون نیاز به کدنویسی جزئیات برای تعامل راه دور توسط برنامهنویس محقق میشود. همچنین، این فراخوانی رویه، پروتکلهای سطح پایین انتقال از جمله UDP و TCP/IP را نیز مدیریت میکند.
حال در ادامه مقاله «RPC چیست» به شرح اجزای RPC پرداخته شده است.
اجزای RPC چه هستند؟
معماری RPC اساساً از پنج بخش تشکیل شده که شمال کلاینت، Client Stub، زمان اجرای RPC یا RPC Runtime، سرور Stub و خود سرور است. در این بخش از مقاله «RPC چیست» برخی از این اجزا شرح داده شدهاند. ابتدا به شرح RPC Runtime پرداخته شده است.
RPC Runtime چیست ؟
سیستم زمان اجرای RPC یا همان RPC Runtime ، کتابخانههایی از روالها (Routine) و مجموعهای از سرویسها است. این مجموعه روالها، ارتباطات شبکهای را مدیریت میکنند که اساس ساز و کار RPC است.
در طی یک فراخوانی RPC ، سیستمهای زمان اجرای سمت کلاینت و سمت سرور عملیات زیر را مدیریت میکنند:
- انقیاد (اتصال | Binding)
- برقراری ارتباطات از طریق یک پروتکل مناسب
- انتقال دادههای فراخوانی شده میان کلاینت و سرور
- مدیریت خطاهای ارتباطی
در ادامه این بخش از مقاله «RPC چیست» به این سوال پاسخ داده شده است که Stub چیست ؟
Stub چیست ؟
کارکرد Stub، فراهم کردن شفافیت برای کدهای نوشته شده توسط برنامهنویس است. در ادامه معرفی Stub در این بخش از مقاله «RPC چیست» به شرح وظایف Stub سمت کلاینت پرداخته شده است.
وظایف Stub سمت کلاینت
- در سمت کلاینت، Stub واسط میان فراخوانی رویه محلی کلاینت و سیستم زمان اجرا را مدیریت میکند.
- دادهها را بستهبندی یا آنها را میگشاید.
- پروتکل زمان اجرای RPC را فراخوانی میکند.
- در صوت تقاضا، برخی از گامهای اتصال را انجام میدهد.
وظایف Stub سمت سرور
در سمت سرور، Stub به طور مشابه، واسطی میان سیستم زمان اجرا و رویههای مدیریت محلی که توسط سرور اجرا شدهاند فراهم میکند. حال پس از معرفی Stub، در ادامه نوشته «RPC چیست» به این سوال پاسخ داده شده است که Binding در RPC چیست؟
Binding در RPC چیست ؟
کلاینت از کجا بداند باید کدام سرویس را فراخوانی کند و این سرویس کجاست؟ منعطفترین راهکار، استفاده از ارتباط پویا (Dynamic Binding) و یافتن سرور در زمان اجرا است. این کار وقتی انجام میشود که ابتدا درخواست RPC انجام شده باشد. اولین باری که Clinet Stub فراخوانی میشود، Clinet Stub با یک Name Server ارتباط برقرار میکند تا نشانی که سرور در آن قرار دارد را انتقال دهد.
Binding (اتصال | ارتباط) از دو بخش تشکیل شده است:
- نامگذاری: سروری که خدماتی برای ارائه دارد، یک واسط برای آن خدمات صادر میکند. صدور یک واسط، سرویس را در سیستم درج میکند تا کلاینتها بتوانند از آن استفاده کنند.
- تعیین موقعیت: کلاینت باید یک واسط صادر شده را پیش از آنکه ارتباط بتواند شروع شود، وارد کند.
حال پس از معرفی برخی از اجزای اساسی پروتکل Remote Procedure Call ، در ادامه مقاله «RPC چیست» به نحوه عملکرد RPC پرداخته و چگونگی کارکرد آن شرح داده شده است.
RPC چطور کار میکند؟
زمانی که یک فراخوانی رویه از راه دور (RPC) انجام میشود، محیطی که فراخوانی را انجام داده است (کلاینت) به حالت تعلیق در میآید. سپس، پارامترهای آن رویه یا روال از طریق شبکه به محیطی منتقل میشوند که رویه قرار است در آن اجرا شود (سرور).
در مرحله بعد، رویه در آن محیط (سرور) اجرا میشود. پس از اتمام رویه، نتایج (جوابها) به محیطی که فراخوانی را انجام داده بود (کلاینت) باز گرداننده میشوند و با دریافت نتایج، کلاینت درست مثل اینکه آن رویه در خود کلاینت انجام شده باشد به ادامه کار خود ادامه میدهد.
با سلام. من می ترسم کسی از راه دور سیستم من را هک کند؛ آیا اگر
Remote Procedure Call (RPC) را غیر فعال کنم، مشکلی به وجود نمی آید؟ یک بار می خواستم این کار را انجام بدهم اما دکمه های تأییدی (اوکی و اپلای) غیر فعال بودند.
با سلام
ضمن تشکر، من مترجم هستم و از مقاله شما در ارتباط با RPC استفاده کردم، ممکن است بفرمایید عدد ۲ در این عبارت به چه معنی است:
remote procedure 2 call (RPC) system
جمله اصلی این است:
A remote procedure 2 call (RPC) system called gRPC was created as an open source project by Google
سلام من میخوام از درایو d به داریو c بدم میگه RPCوجود ندارد میشه راهنمایی کنین ممنون