Протокол за извикване на отдалечена процедура (RPC) в разпределена система
⚡ Умно обобщение
Отдалеченото извикване на процедури (RPC) е протокол за междупроцесна комуникация, който позволява на програма да изпълни процедура в друго адресно пространство или машина, скривайки мрежови данни зад обикновено локално извикване на функция в разпределени клиент-сървър системи.

Какво е RPC?
Remote Procedure Call (RPC) е междупроцесна комуникация техника, използвана за клиент-сървър приложения. Пълната форма на RPC е Remote Procedure Call (отдалечено извикване на процедура). RPC механизмите се използват, когато компютърна програма кара процедура или подпрограма да се изпълни в различно адресно пространство, кодирано като нормално извикване на процедура, без програмистът изрично да кодира детайлите за отдалеченото взаимодействие.
Това извикване на процедура управлява и ниско ниво на транспортни протоколи, като UDP и TCP/IP, за да пренася данните от съобщенията между програмите.
Видове RPC
Три вида RPC са:
- RPC за обратно извикване
- Излъчване RPC
- RPC в пакетен режим
RPC за обратно извикване
Този тип RPC позволява парадигма от тип „peer-to-peer“ (P2P) между участващите процеси. Той помага на процеса да действа едновременно като клиент и сървър.
Функции на RPC за обратно извикване:
- Обработва дистанционно обработвани, интерактивни проблеми с приложенията.
- Предоставя на сървъра идентификатора на клиента.
- Обратното повикване кара клиентския процес да чака.
- Управлява блокиранията при обратно извикване.
- Това улеснява парадигмата на взаимодействие от типа „peer-to-peer“ между участващите процеси.
Излъчване RPC
Излъчването на RPC е заявка на клиент, която се излъчва по мрежата и се обработва от всички сървъри, които имат метода за обработка на тази заявка.
Функции на Broadcast RPC:
- Позволява ви да укажете, че съобщението със заявка на клиента трябва да бъде излъчено.
- Можете да декларирате портове за излъчване.
- Това помага за намаляване на натоварването на физическата мрежа.
RPC в пакетен режим
Пакетният RPC режим помага за поставянето на отделни RPC заявки в буфер за предаване от страна на клиента и след това изпращането им по мрежата наведнъж до сървъра.
Функции на RPC в пакетен режим:
- Това минимизира разходите, свързани с изпращането на заявка, тъй като изпраща заявките по мрежата наведнъж до сървъра.
- Този тип RPC протокол е ефективен само за приложения, които се нуждаят от по-ниски скорости на повиквания.
- Нуждае се от надежден протокол за предаване.
RPC Archiтекстура
RPC архитектурата има основно пет компонента на програмата:
- Удовлетвореност
- Клиентско заготовка
- RPC Runtime
- Сървърен пън
- Сървър
RPC Archiтекстура
Как работи RPC?
Следните стъпки се извършват по време на RPC процеса:
Стъпка 1) Клиентът, клиентският stub и един екземпляр на RPC runtime се изпълняват на клиентската машина.
Стъпка 2) Клиентът стартира процес на клиентски stub, като предава параметри по обичайния начин. Клиентският stub се съхранява в собственото адресно пространство на клиента. Той също така изисква от локалната RPC Runtime среда да изпрати заявката към сървърния stub.
Стъпка 3) На този етап потребителят осъществява достъп до RPC, като извършва обикновено локално извикване на процедура. RPC Runtime управлява предаването на съобщения между клиента и сървъра през мрежата. Той също така изпълнява задачите по повторно предаване, потвърждение, маршрутизиране и криптиране.
Стъпка 4) След завършване на сървърната процедура, изпълнението се връща към сървърния stub, който пакетира (marshals) върнатите стойности в съобщение. След това сървърният stub изпраща съобщението обратно към транспортния слой.
Стъпка 5) В тази стъпка транспортният слой изпраща резултатното съобщение обратно към транспортния слой на клиента, който връща съобщението към клиентския stub.
Стъпка 6) На този етап, клиентският stub демаршалира (разопакова) върнатите параметри в получения пакет и изпълнението се връща към извикващата страна.
Характеристики на RPC
Ето основните характеристики на RPC:
- Извиканата процедура е в друг процес, който вероятно се намира на друга машина.
- Процесите не споделят адресно пространство.
- Параметрите се предават само чрез стойности.
- RPC се изпълнява в средата на сървърния процес.
- Не предлага достъп до средата на извикващата процедура.
Характеристики на RPC
Ето важните характеристики на RPC:
- Прост синтаксис на повикване.
- Предлага известна семантика.
- Осигурява добре дефиниран интерфейс.
- Може да комуникира между процеси на едни и същи или различни машини.
Предимства на RPC
Ето плюсовете/ползите от RPC:
- RPC помага на клиентите да комуникират със сървърите чрез конвенционалното използване на процедурни извиквания на езици от високо ниво.
- RPC е моделиран по локално извикване на процедура, но извиканата процедура най-вероятно се изпълнява в различен процес и обикновено на различен компютър.
- RPC поддържа модели, ориентирани към процеси и нишки.
- RPC прави вътрешния механизъм за предаване на съобщения скрит от потребителя.
- Той ангажира много от слоевете на протокола, за да подобри производителността.
- RPC осигурява абс.tracция; например, естеството на мрежовата комуникация, свързано с предаване на съобщения, остава скрито от потребителя.
- RPC може да се използва както в разпределена, така и в локална среда.
- Усилията, необходими за пренаписване и повторно разработване на кода, са минимални.
Недостатъци на RPC
Ето минусите/недостатъците на използването на RPC:
- Отдалеченото извикване на процедури предава параметри само по стойности; стойностите на указатели (препратки) не са разрешени.
- Времето за извикване (и връщане) на отдалечени процедури – режийните разходи – е значително по-високо, отколкото при локална процедура.
- Този механизъм е силно уязвим за повреди, тъй като включва комуникационна система, друга машина и друг процес.
- Концепцията RPC може да бъде реализирана по различни начини, така че няма единен стандарт.
- Не предлага гъвкавост за хардуерната архитектура, тъй като е базирана предимно на взаимодействие.
- Цената на процеса се увеличава поради извикването на отдалечени процедури.

