Remote Procedure Call sau RPC este o tehnică puternică pentru construirea de aplicații distribuite, bazate pe client-server. Este cunoscut și ca apel de funcție sau apel de subrutină. Un apel de procedură la distanță este atunci când un program de calculator determină executarea unei proceduri într-un spațiu de adrese diferit, codificat ca un apel de procedură locală, fără ca programatorul să precizeze în mod explicit detaliile pentru interacțiunea de la distanță. Programatorul scrie în esență același cod, indiferent dacă subrutina este locală pentru programul de execuție sau la distanță. Aceasta este o formă de interacțiune client-server implementată printr-un sistem de transmitere a mesajelor cerere-răspuns.
Modelul RPC presupune transparența locației că procedurile de apelare sunt în mare parte aceleași, fie că sunt locale sau la distanță. De obicei, acestea nu sunt identice, astfel încât apelurile locale pot fi diferențiate de apelurile de la distanță. Apelurile de la distanță sunt de obicei ordine de mărime mai lente și mai puțin fiabile decât apelurile locale, așa că este important să le distingem.
RPC-urile sunt o formă de comunicare între procese (IPC), prin aceea că diferite procese au spații de adrese diferite. Au spații de adrese virtuale distincte pe aceeași mașină gazdă, chiar dacă spațiul de adrese fizice este același. În timp ce, dacă sunt pe gazde diferite, spațiul de adrese fizice este diferit.
Cum să efectuați un apel de procedură de la distanță
Mediul de apelare este suspendat, parametrii procedurii sunt transferați prin rețea în mediul în care urmează să se execute procedura și procedura este executată acolo.
Când procedura se termină și își produce rezultatele, este transferată înapoi în mediul de apelare, unde execuția se reia ca și cum ar reveni dintr-un apel obișnuit de procedură.
NOTĂ: RPC este deosebit de potrivit pentru interacțiunea client-server (de exemplu, interogare-răspuns) în care fluxul de control alternează între apelant și apelat. Conceptual, clientul și serverul nu se execută simultan; în schimb, firul de execuție sare de la apelant la cel apelat și apoi înapoi.
Tipuri de RPC
Există trei tipuri de apeluri de procedură la distanță (RPC) într-un sistem de operare, cum ar fi:
1. RPC de apel invers
Acest tip de RPC permite o paradigmă P2P între procesele participante. Ajută un proces să fie atât servicii client, cât și servicii server. Callback RPC are următoarele funcții, cum ar fi:
derivate parțiale din latex
- Probleme de aplicații interactive procesate de la distanță.
- Oferă server cu mâner pentru clienți.
- Callback face ca procesul clientului să aștepte.
- Gestionați blocajele de apel invers.
- Facilitează o paradigmă peer-to-Peer între procesele participante.
2. Difuzați RPC
Broadcast RPC este o cerere a unui client difuzată în rețea, procesată de toate serverele cu metoda de procesare a acelei cereri. Broadcast RPC are următoarele funcții, cum ar fi:
- Vă permite să specificați că mesajul de solicitare al clientului trebuie difuzat.
- Puteți declara porturi de difuzare.
- Ajută la reducerea sarcinii rețelei fizice.
3. RPC în modul lot
RPC în modul lot ajută la coadă, cererile RPC separate, într-un buffer de transmisie, pe partea clientului, și apoi să le trimită într-o rețea într-un lot către server. RPC în modul lot are următoarele funcții, cum ar fi:
- Minimizează suprasarcina implicată în trimiterea unei cereri prin trimiterea lor prin rețea într-un singur lot către server.
- Acest tip de protocol RPC este eficient doar pentru o aplicație care necesită rate de apel mai mici.
- Are nevoie de un protocol de transmisie fiabil.
Ce face RPC?
Când instrucțiunile de program care utilizează cadrul RPC sunt compilate într-un program executabil, în codul compilat este inclus un stub reprezentând codul procedurii de la distanță.
Când programul este rulat și apelul de procedură este emis, stub-ul primește cererea și o înaintează către un program de rulare client în computerul local. Prima dată când este invocat stub-ul clientului, acesta contactează un server de nume pentru a determina adresa de transport unde se află serverul.
Programul client runtime știe cum să se adreseze computerului la distanță și aplicației server și trimite mesajul prin rețea care solicită procedura de la distanță. În mod similar, serverul include un program de rulare și un stub care interfață cu procedura de la distanță în sine, iar protocoalele de cerere de răspuns sunt returnate în același mod.
cast sql
Caracteristicile RPC
Într-un sistem de operare, apelul de procedură la distanță (RPC) are următoarele caracteristici, cum ar fi:
- RPC ascunde de utilizator complexitatea procesului de transmitere a mesajelor.
- RPC folosește doar straturi specifice ale modelului OSI, cum ar fi stratul de transport.
- Clienții pot comunica cu serverul utilizând limbaje de nivel superior.
- RPC funcționează bine atât cu medii locale, cât și cu medii la distanță.
- Programul RPC este scris într-un cod simplu și este ușor de înțeles de către programator.
- Sistemul de operare poate gestiona cu ușurință procesele și firele implicate în RPC.
- Sistemul de operare ascunde abstracțiile RPC de la utilizator.
Cum funcționează RPC?
Când este invocat un apel de procedură la distanță, mediul de apelare este suspendat, parametrii procedurii sunt transferați prin rețea în mediul în care urmează să se execute procedura, iar procedura este apoi executată în acel mediu.
Când procedura se termină, rezultatele sunt transferate înapoi în mediul de apelare, unde execuția se reia ca și cum ar reveni dintr-un apel obișnuit de procedură.
Un apel de procedură la distanță (RPC) funcționează în următorii pași într-un sistem de operare:
Pasul 1: Clientul, stub-ul clientului și timpul de execuție RPC se execută pe computerul client.
Pasul 2: Un client începe un proces stub de client prin transmiterea parametrilor în mod obișnuit. Se apelează împachetarea parametrilor procedurii triaj . Stub-ul clientului se stochează în spațiul de adresă propriu al clientului și, de asemenea, solicită RPC Runtime local să trimită înapoi la server stub.
Pasul 3: În această etapă, utilizatorul poate accesa RPC efectuând un apel procedural local obișnuit. RPC Runtime gestionează transmiterea mesajelor între rețea între client și server și, de asemenea, îndeplinește funcția de retransmitere, confirmare, rutare și criptare.
Pasul 4: După finalizarea procedurii de server, acesta revine la server stub, care împachetează (marshall) valorile returnate într-un mesaj. Stub-ul serverului trimite apoi un mesaj înapoi la stratul de transport.
Pasul 5: În acest pas, stratul de transport trimite înapoi mesajul rezultat către stratul de transport al clientului, care returnează un mesaj către stub-ul clientului.
lista de creare a java
Pasul 6: În această etapă, stub-ul clientului demarshall (despachetează) parametrii returnați din pachetul rezultat, iar procesul de execuție revine apelantului.
Probleme legate de apelul de procedură de la distanță (RPC)
Într-un sistem de operare, apelul de procedură la distanță sau RPC s-au confruntat cu unele probleme care trebuie rezolvate, cum ar fi:
1. RPC Runtime
Sistemul RPC runtime este o bibliotecă de rutine și servicii care gestionează comunicațiile de rețea care stau la baza mecanismului RPC. În cursul unui apel RPC, codul sistemelor de rulare pe partea client și pe partea serverului gestionează legarea, stabilește comunicații printr-un protocol adecvat, transmite date de apel între client și server și gestionează erorile de comunicație.
2. Stub
Funcția stub-ului este de a oferi transparență codului aplicației scris de programator.
3. Legare
Cum știe clientul pe cine să sune și unde se află serviciul?
Cea mai flexibilă soluție este să utilizați legarea dinamică și să găsiți serverul în timpul rulării când RPC-ul este creat pentru prima dată. Prima dată când este invocat stub-ul clientului, acesta contactează un server de nume pentru a determina adresa de transport la care se află serverul. Legatura constă din două părți:
4. Semantica de apelare asociată cu RPC
elementele de bază ale java
Este clasificat în principal în următoarele opțiuni,
Caracteristicile RPC
Iată caracteristicile esențiale ale apelului procedurii de la distanță:
- Procedura apelată se află într-un alt proces, care este probabil să locuiască într-o altă mașină.
- Procesele nu împart spațiul de adrese.
- Parametrii sunt transmisi numai prin valori.
- RPC se execută în mediul procesului serverului.
- Nu oferă acces la mediul procedurii de apelare.
Avantajele RPC
Iată câteva avantaje sau beneficii ale RPC, cum ar fi:
- Metoda RPC ajută clienții să comunice cu serverele prin utilizarea convențională a apelurilor de procedură în limbaje de nivel înalt.
- Metoda RPC este modelată pe apelul procedurii locale, dar procedura este cel mai probabil să fie executată într-un proces diferit și, de obicei, pe un computer diferit.
- RPC acceptă modele orientate pe proces și pe fire.
- RPC face ca mecanismul intern de transmitere a mesajelor să fie ascuns utilizatorului.
- Efortul necesar pentru a rescrie și re-dezvolta codul este minim.
- Apelurile de procedură de la distanță pot fi utilizate pentru distribuție și mediul local.
- Angajează multe dintre straturile de protocol pentru a îmbunătăți performanța.
- RPC oferă abstractizare. De exemplu, natura de transmitere a mesajelor a comunicației în rețea rămâne ascunsă utilizatorului.
- RPC permite utilizarea aplicațiilor într-un mediu distribuit care nu este doar în mediul local.
- Cu codul RPC, eforturile de rescriere și re-dezvoltare sunt minime.
- Modele orientate pe proces și orientate pe fire susținute de RPC.
Dezavantajele RPC
Iată câteva dezavantaje sau dezavantaje ale utilizării RPC, cum ar fi:
- Apelul de procedură la distanță transmite parametrii numai după valori și valori de pointer, ceea ce nu este permis.
- Timpul de apelare (și returnare) a procedurii de la distanță (adică, cheltuielile generale) poate fi semnificativ mai mic decât o procedură locală.
- Acest mecanism este foarte vulnerabil la eșec, deoarece implică un sistem de comunicații, o altă mașină și un alt proces.
- Conceptul RPC poate fi implementat în diferite moduri, ceea ce nu este standard.
- Nu oferă nicio flexibilitate în RPC pentru arhitectura hardware, deoarece se bazează în mare parte pe interacțiune.
- Costul procesului este crescut din cauza unui apel de procedură de la distanță.