Vzdialené volanie procedúry (RPC) je výkonná technika konštrukcie distribuované aplikácie na báze klient-server . Je založená na rozšírení konvenčného volania miestnej procedúry tak, aby volaná procedúra nemusí existovať v rovnakom adresnom priestore ako volajúca procedúra . Tieto dva procesy môžu byť na rovnakom systéme alebo môžu byť na rôznych systémoch so sieťou, ktorá ich spája.
Pri volaní procedúry na diaľku:

1. Prostredie volania je pozastavené, parametre procedúry sa prenesú cez sieť do prostredia, kde sa má procedúra vykonať, a tam sa procedúra vykoná.
konvertovať reťazec na jsonobject java
2. Keď procedúra skončí a vygeneruje svoje výsledky, jej výsledky sa prenesú späť do prostredia volania, kde sa vykonávanie obnoví, ako keby sa vracalo z bežného volania procedúry.
POZNÁMKA: RPC je obzvlášť vhodný pre klient-server (napr. dotaz-odpoveď) interakcia, v ktorej tok kontroly striedavo medzi volajúcim a volaným . Koncepčne sa klient a server nevykonávajú súčasne. Namiesto toho vlákno vykonávania preskočí z volajúceho na volaného a potom späť.
Fungovanie RPC

Počas RPC prebiehajú tieto kroky:
- Klient vyvolá a postup klientskeho útržku , odovzdávanie parametrov obvyklým spôsobom. Klientsky útržok sa nachádza vo vlastnom adresnom priestore klienta.
- Útržok klienta marshalls (balíček) parametre do správy. Marshalling zahŕňa konverziu reprezentácie parametrov do štandardného formátu a skopírovanie každého parametra do správy.
- Klientsky stub odošle správu transportnej vrstve, ktorá ju odošle na vzdialený server.
- Na serveri transportná vrstva odovzdá správu stub servera, ktorý demarshalls (rozbaliť) parametre a volá požadovanú rutinu servera pomocou mechanizmu volania pravidelných procedúr.
- Keď sa procedúra servera dokončí, vráti sa na stub servera (napr. prostredníctvom návratu volania normálnej procedúry) , ktorý zaradí vrátené hodnoty do správy. Stub servera potom odovzdá správu transportnej vrstve.
- Transportná vrstva odošle správu o výsledku späť klientskej transportnej vrstve, ktorá odovzdá správu späť klientovi.
- Klientsky stub demarshalluje návratové parametre a vykonanie sa vráti k volajúcemu.
Kľúčové úvahy pri navrhovaní a implementácii systémov RPC sú:
- Bezpečnosť: Keďže RPC zahŕňa komunikáciu cez sieť, bezpečnosť je hlavným problémom. Aby sa zabránilo neoprávnenému prístupu a chránili sa citlivé údaje, musia sa zaviesť opatrenia ako autentifikácia, šifrovanie a autorizácia. Škálovateľnosť: So zvyšujúcim sa počtom klientov a serverov sa nesmie znižovať výkon systému RPC. Techniky vyvažovania záťaže a efektívne využitie zdrojov sú dôležité pre škálovateľnosť. Odolnosť voči chybám: Systém RPC by mal byť odolný voči zlyhaniam siete, zlyhaniam servera a iným neočakávaným udalostiam. Opatrenia ako redundancia, núdzové prepnutie a elegantná degradácia môžu pomôcť zabezpečiť odolnosť voči chybám. Štandardizácia: K dispozícii je niekoľko rámcov a protokolov RPC a je dôležité vybrať si štandardizovaný a široko akceptovaný, aby sa zabezpečila interoperabilita a kompatibilita medzi rôznymi platformami a programovacími jazykmi. Ladenie výkonu: Je dôležité doladiť systém RPC pre optimálny výkon. To môže zahŕňať optimalizáciu sieťového protokolu, minimalizáciu dát prenášaných cez sieť a zníženie latencie a réžie spojenej s RPC hovormi.
PROBLÉMY RPC :
Problémy, ktoré treba riešiť:
c pole reťazcov programu
1. RPC Runtime:
RPC run-time systém je knižnica rutín a súbor služieb, ktoré obsluhujú sieťovú komunikáciu, ktorá je základom mechanizmu RPC. V priebehu volania RPC spracovávajú kód run-time systémov na strane klienta a servera viazanie, nadviazanie komunikácie cez vhodný protokol, odovzdávanie údajov o hovoroch medzi klientom a serverom a spracovávanie komunikačných chýb.
2. Stup:
Funkciou stub je poskytujú transparentnosť kódu aplikácie napísanom programátorom .
- Na strane klienta stub spracováva rozhranie medzi volaním lokálnej procedúry klienta a run-time systémom, zoraďuje a rozraďuje údaje, vyvoláva run-time protokol RPC a na požiadanie vykonáva niektoré kroky viazania. Na strane servera stub poskytuje podobné rozhranie medzi run-time systémom a procedúrami lokálneho manažéra, ktoré vykonáva server.
3. Viazanosť: Ako klient vie, komu má zavolať a kde sa služba nachádza?
Najflexibilnejším riešením je použiť dynamickú väzbu a nájsť server v čase spustenia pri prvom vytvorení RPC. Pri prvom vyvolaní klientskeho stub kontaktuje názvový server, aby určil transportnú adresu, na ktorej sa server nachádza.
Väzba sa skladá z dvoch častí:
hostiteľský linux
- my:
- lokalizácia:
- Server, ktorý ponúka službu, exportuje rozhranie. Exportovanie rozhrania ho zaregistruje v systéme, aby ho klienti mohli používať. Klient musí pred začatím komunikácie importovať (exportované) rozhranie.
4. Sémantika volania spojená s RPC :
Rozdeľuje sa hlavne do nasledujúcich možností:
- Znova skúsiť správu so žiadosťou –
Či sa má zopakovať odoslanie správy so žiadosťou, keď server zlyhá alebo príjemca správu nedostal. Duplicitné filtrovanie -
Odstráňte duplicitné požiadavky servera. Opakovaný prenos výsledkov –
Na opätovné odoslanie stratených správ bez opätovného vykonania operácií na strane servera.
VÝHODY:
- RPC poskytuje ABSTRAKCIA t.j. povaha sieťovej komunikácie na odovzdávanie správ je pred používateľom skrytá.
- RPC často vynecháva mnohé vrstvy protokolu, aby sa zlepšil výkon. Aj malé zlepšenie výkonu je dôležité, pretože program môže často vyvolávať RPC.
- RPC umožňuje použitie aplikácií v distribuovanom prostredí, nielen v lokálnom prostredí.
- S RPC kódom je námaha na prepisovanie/opätovný vývoj minimalizovaná.
- Procesne orientované a vláknovo orientované modely podporované RPC.
Referencie:
- https://web.cs.wpi.edu/~cs4514/b98/week8-rpc/week8-rpc.html
- https://users.cs.cf.ac.uk/Dave.Marshall/C/node33.html
- Počítačové siete: prístup zhora nadol od FOROUZAN