Remote Procedure Call или RPC е мощна техника за конструиране на разпределени приложения, базирани на клиент-сървър. Известно е още като извикване на функция или извикване на подпрограма. Извикване на отдалечена процедура е, когато компютърна програма кара процедура да се изпълни в различно адресно пространство, кодирано като извикване на локална процедура, без програмистът изрично да посочва подробностите за отдалеченото взаимодействие. Програмистът пише по същество един и същ код, независимо дали подпрограмата е локална за изпълняващата програма или отдалечена. Това е форма на взаимодействие клиент-сървър, реализирана чрез система за предаване на съобщения заявка-отговор.
RPC моделът предполага прозрачност на местоположението че процедурите за повикване са до голяма степен еднакви, независимо дали локални или отдалечени. Обикновено те не са идентични, така че местните разговори да могат да бъдат разграничени от отдалечените. Дистанционните обаждания обикновено са с порядък по-бавни и по-малко надеждни от местните, така че разграничаването им е важно.
RPC са форма на комуникация между процесите (IPC), тъй като различните процеси имат различни адресни пространства. Те имат различни виртуални адресни пространства на една и съща хост машина, въпреки че физическото адресно пространство е същото. Докато ако са на различни хостове, физическото адресно пространство е различно.
Как да направите дистанционно извикване на процедура
Извикващата среда е спряна, параметрите на процедурата се прехвърлят през мрежата към средата, където трябва да се изпълни процедурата, и процедурата се изпълнява там.
Когато процедурата приключи и даде своите резултати, тя се прехвърля обратно в извикващата среда, където изпълнението се възобновява, сякаш се връща от редовно извикване на процедура.
ЗАБЕЛЕЖКА: RPC е особено подходящ за взаимодействие клиент-сървър (напр. заявка-отговор), при което потокът на управление се редува между повикващия и извиквания. Концептуално, клиентът и сървърът не се изпълняват едновременно; вместо това нишката на изпълнение прескача от извикващия към извиквания и след това обратно.
Видове RPC
Има три типа извикване на отдалечени процедури (RPC) в една операционна система, като например:
1. RPC за обратно извикване
Този тип RPC позволява P2P парадигма между участващите процеси. Помага на процеса да бъде както клиент, така и сървър услуги. RPC за обратно извикване има следните функции, като например:
руджира банерджи
- Дистанционно обработени проблеми с интерактивни приложения.
- Предлага сървър с обслужване на клиенти.
- Обратното извикване кара клиентския процес да чака.
- Управлявайте блокировките за обратно извикване.
- Той улеснява парадигмата peer-to-peer сред участващите процеси.
2. Излъчване на RPC
Broadcast RPC е заявка на клиент, излъчена в мрежата, обработена от всички сървъри с метода за обработка на тази заявка. Broadcast RPC има следните функции, като например:
- Позволява ви да посочите, че съобщението за заявка на клиента трябва да бъде излъчено.
- Можете да декларирате портове за излъчване.
- Помага за намаляване на натоварването на физическата мрежа.
3. RPC в пакетен режим
RPC в пакетен режим помага за поставяне на опашка, отделяне на RPC заявки в буфер за предаване от страна на клиента и след това изпращането им в мрежа в една група към сървъра. RPC в пакетен режим има следните функции, като например:
- Той минимизира режийните разходи, свързани с изпращането на заявка, като ги изпраща по мрежата в една партида към сървъра.
- Този тип RPC протокол е ефективен само за приложение, което се нуждае от по-ниски скорости на повикване.
- Нуждае се от надежден протокол за предаване.
Какво прави RPC?
Когато програмните изрази, използващи RPC рамката, се компилират в изпълнима програма, в компилирания код се включва мъниче, представляващо кода на отдалечената процедура.
Когато програмата се стартира и извикването на процедурата е издадено, мъничето получава заявката и я препраща към клиентска програма за изпълнение в локалния компютър. При първото извикване на клиентския стълб той се свързва със сървър за имена, за да определи транспортния адрес, където се намира сървърът.
Програмата за изпълнение на клиента знае как да адресира отдалечения компютър и сървърното приложение и изпраща съобщението през мрежата, което изисква отдалечената процедура. По подобен начин сървърът включва програма за изпълнение и пън, който взаимодейства със самата отдалечена процедура, а протоколите за заявка за отговор се връщат по същия начин.
Характеристики на RPC
В една операционна система извикването на отдалечена процедура (RPC) има следните функции, като например:
- RPC скрива сложността на процеса на предаване на съобщения от потребителя.
- RPC използва само специфични слоеве на OSI модела като транспортния слой.
- Клиентите могат да комуникират със сървъра, като използват езици от по-високо ниво.
- RPC работи добре както с локални среди, така и с отдалечени среди.
- Програмата на RPC е написана с прост код и е лесна за разбиране от програмиста.
- Операционната система може лесно да обработва процеси и нишки, включени в RPC.
- Операционната система скрива абстракциите на RPC от потребителя.
Как работи RPC?
Когато се извика извикване на отдалечена процедура, извикващата среда се преустановява, параметрите на процедурата се прехвърлят през мрежата към средата, където трябва да се изпълни процедурата, и след това процедурата се изпълнява в тази среда.
javafx
Когато процедурата приключи, резултатите се прехвърлят обратно в извикващата среда, където изпълнението се възобновява, сякаш се връща от редовно извикване на процедура.
Извикването на отдалечена процедура (RPC) работи в следните стъпки в операционна система:
Етап 1: Клиентът, клиентският стълб и RPC времето за изпълнение се изпълняват на клиентската машина.
Стъпка 2: Клиент стартира клиентски процес, като предава параметри по обичайния начин. Извиква се пакетирането на параметрите на процедурата сортиране . Клиентският пън се съхранява в собственото адресно пространство на клиента и също така иска от локалния RPC Runtime да изпрати обратно към сървърния пън.
Стъпка 3: На този етап потребителят може да получи достъп до RPC чрез редовно локално процедурно повикване. RPC Runtime управлява предаването на съобщения между мрежата през клиент и сървър и също така изпълнява работата по повторно предаване, потвърждение, маршрутизиране и криптиране.
Стъпка 4: След завършване на сървърната процедура, той се връща към сървърния файл, който пакетира (маршалира) върнатите стойности в съобщение. След това сървърният стълб изпраща съобщение обратно към транспортния слой.
Стъпка 5: В тази стъпка транспортният слой изпраща обратно резултатното съобщение до клиентския транспортен слой, който връща обратно съобщение към клиентския мъничък.
Стъпка 6: В този етап клиентският стълб демаршалира (разопакова) върнатите параметри в получения пакет и процесът на изпълнение се връща към извикващия.
Проблеми с извикване на отдалечена процедура (RPC)
В една операционна система извикването на отдалечена процедура или RPC е изправено пред някои проблеми, които трябва да бъдат решени, като например:
машинопис за всеки
1. RPC време за изпълнение
RPC системата за изпълнение е библиотека от процедури и услуги, които обработват мрежовите комуникации, които са в основата на RPC механизма. В хода на RPC повикване кодът на системата за изпълнение от страна на клиента и от страна на сървъра обработва обвързването, установява комуникации по подходящ протокол, предава данни за повикване между клиента и сървъра и обработва комуникационни грешки.
java точка
2. Пънче
Функцията на мъничето е да осигури прозрачност на кода на приложението, написан от програмиста.
3. Подвързване
Как клиентът знае на кого да се обади и къде се намира услугата?
Най-гъвкавото решение е да се използва динамично обвързване и да се намери сървърът по време на изпълнение, когато RPC се прави за първи път. При първото извикване на клиентския стълб той се свързва със сървър за имена, за да определи транспортния адрес, на който се намира сървърът. Подвързването се състои от две части:
4. Семантиката на извикването, свързана с RPC
Основно се класифицира в следните опции,
Характеристики на RPC
Ето основните характеристики на извикването на отдалечена процедура:
- Извиканата процедура е в друг процес, който вероятно ще се намира в друга машина.
- Процесите не споделят адресно пространство.
- Параметрите се предават само чрез стойности.
- RPC се изпълнява в средата на сървърния процес.
- Той не предлага достъп до средата на извикващата процедура.
Предимства на RPC
Ето някои предимства или предимства на RPC, като например:
- Методът RPC помага на клиентите да комуникират със сървъри чрез конвенционалното използване на извиквания на процедури на езици от високо ниво.
- RPC методът е моделиран на извикване на локална процедура, но най-вероятно е процедурата да се изпълни в различен процес и обикновено на различен компютър.
- RPC поддържа модели, ориентирани към процеси и нишки.
- RPC прави вътрешния механизъм за предаване на съобщения скрит от потребителя.
- Усилията, необходими за пренаписване и повторно разработване на кода, са минимални.
- Отдалечените извиквания на процедури могат да се използват за разпространение и локална среда.
- Той ангажира много от слоевете на протокола, за да подобри производителността.
- RPC осигурява абстракция. Например предаването на съобщения в мрежовата комуникация остава скрито за потребителя.
- RPC позволява използването на приложенията в разпределена среда, която не е само в локалната среда.
- С RPC код усилията за пренаписване и повторно разработване са сведени до минимум.
- Процесно-ориентирани и нишково-ориентирани модели, поддържани от RPC.
Недостатъци на RPC
Ето някои недостатъци или недостатъци на използването на RPC, като например:
- Извикването на отдалечена процедура предава параметри само по стойности и стойности на указател, което не е разрешено.
- Времето за извикване (и връщане) на отдалечена процедура (т.е. режийни разходи) може да бъде значително по-малко от локална процедура.
- Този механизъм е силно уязвим към отказ, тъй като включва комуникационна система, друга машина и друг процес.
- RPC концепцията може да се реализира по различни начини, което не може да бъде стандартно.
- Не предлага никаква гъвкавост в RPC за хардуерна архитектура, тъй като е предимно базирана на взаимодействие.
- Цената на процеса се увеличава поради дистанционно извикване на процедура.