logo

Apel de procedură de la distanță (RPC) în sistemul de operare

Apel de procedură de la distanță (RPC) este o tehnică puternică de construcție aplicații distribuite, bazate pe client-server . Se bazează pe extinderea procedurii locale convenționale, astfel încât procedura apelată nu trebuie să existe în același spațiu de adrese ca procedura apelantă . Cele două procese pot fi pe același sistem sau pot fi pe sisteme diferite cu o rețea care le conectează.

Când efectuați un apel de procedură de la distanță:



1. 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.

strsep c

2. Când procedura se termină și își produce rezultatele, rezultatele sunt transferate înapoi în mediul apelant, unde execuția se reia ca și cum ar reveni dintr-un apel obișnuit de procedură.



NOTĂ: RPC este deosebit de potrivit pentru client-server (de exemplu, interogare-răspuns) interacţiune în care fluxul de control alternează între apelant și apelat . Conceptual, clientul și serverul nu se execută ambele în același timp. În schimb, firul de execuție sare de la apelant la apelat și apoi înapoi.

Funcționarea RPC



panta nedefinita

Următorii pași au loc în timpul unui RPC:

  1. Un client invocă un procedura client stub , trecând parametrii în mod obișnuit. Stub-ul clientului se află în spațiul de adrese propriu al clientului.
  2. Citul clientului marshalls (pachet) parametrii într-un mesaj. Marshalling include convertirea reprezentării parametrilor într-un format standard și copierea fiecărui parametru în mesaj.
  3. Stub-ul clientului transmite mesajul la stratul de transport, care îl trimite la mașina server la distanță.
  4. Pe server, stratul de transport transmite mesajul unui server stub, care demarshalls (despachetează) parametrii și apelează rutina de server dorită folosind mecanismul obișnuit de apelare a procedurii.
  5. Când procedura serverului se termină, aceasta revine la stub-ul serverului (de exemplu, printr-o procedură normală de retur apel) , care grupează valorile returnate într-un mesaj. Stub-ul serverului predă apoi mesajul stratului de transport.
  6. Stratul de transport trimite mesajul rezultat înapoi la stratul de transport client, care predă mesajul înapoi stub-ului clientului.
  7. Stub-ul clientului demarchează parametrii de returnare și execuția revine apelantului.

Considerațiile cheie pentru proiectarea și implementarea sistemelor RPC sunt:

    Securitate: Deoarece RPC implică comunicarea prin rețea, securitatea este o preocupare majoră. Măsuri precum autentificarea, criptarea și autorizarea trebuie implementate pentru a preveni accesul neautorizat și pentru a proteja datele sensibile. Scalabilitate: Pe măsură ce numărul de clienți și servere crește, performanța sistemului RPC nu trebuie să se degradeze. Tehnicile de echilibrare a sarcinii și utilizarea eficientă a resurselor sunt importante pentru scalabilitate. Toleranță la erori: sistemul RPC ar trebui să fie rezistent la defecțiuni de rețea, blocări ale serverului și alte evenimente neașteptate. Măsuri precum redundanța, failoverul și degradarea grațioasă pot ajuta la asigurarea toleranței la erori. Standardizare: Există mai multe cadre și protocoale RPC disponibile și este important să alegeți unul standardizat și acceptat pe scară largă pentru a asigura interoperabilitatea și compatibilitatea pe diferite platforme și limbaje de programare. Reglarea performanței: reglarea fină a sistemului RPC pentru o performanță optimă este importantă. Acest lucru poate implica optimizarea protocolului de rețea, reducerea la minimum a datelor transferate prin rețea și reducerea latenței și a supraîncărcării asociate apelurilor RPC.

PROBLEME RPC :
Probleme care trebuie abordate:

1. RPC Runtime:
Sistemul RPC run-time este o bibliotecă de rutine și un set de servicii care gestionează comunicațiile de rețea care stau la baza mecanismului RPC. În cursul unui apel RPC, codul de gestionare a sistemelor de rulare pe partea client și pe partea serverului legarea, stabilirea comunicațiilor printr-un protocol adecvat, transmiterea datelor de apel între client și server și gestionarea erorilor de comunicație.

2. Stub:
Funcția ciotului este de a oferiți transparență codului aplicației scris de programator .

    Pe partea clientului, stub-ul se ocupă de interfața dintre apelul de procedură locală a clientului și sistemul de rulare, trimițând și demarsling datele, invocând protocolul RPC de rulare și, dacă este solicitat, efectuând unii dintre pașii de legare. Pe partea de server, stub-ul oferă o interfață similară între sistemul de rulare și procedurile de manager local care sunt executate de server.

3. Obligatoriu: Cum știe clientul pe cine să apeleze ș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.

Legarea constă din două părți:

ce este hashmap java
  • Noi:
  • Localizare:
    Un Server care are un serviciu care să ofere exportă o interfață pentru acesta. Exportarea unei interfețe o înregistrează în sistem, astfel încât clienții să o poată utiliza. Un client trebuie să importe o interfață (exportată) înainte de a începe comunicarea.

4. Semantica apelului asociată cu RPC:
Este clasificat în principal în următoarele opțiuni:

    Reîncercați mesajul de solicitare –
    Dacă să reîncercați să trimiteți un mesaj de solicitare atunci când un server a eșuat sau destinatarul nu a primit mesajul. Dublare de filtrare -
    Eliminați solicitările serverului duplicat. Retransmiterea rezultatelor -
    Pentru a retrimite mesajele pierdute fără a reexecuta operațiunile din partea serverului.

AVANTAJE:

  1. RPC oferă REZUMAT adică natura de transmitere a mesajelor a comunicației în rețea este ascunsă utilizatorului.
  2. RPC omite adesea multe dintre straturile de protocol pentru a îmbunătăți performanța. Chiar și o mică îmbunătățire a performanței este importantă, deoarece un program poate invoca des RPC-uri.
  3. RPC permite utilizarea aplicațiilor în mediul distribuit, nu numai în mediul local.
  4. Cu RPC, efortul de rescriere/re-dezvoltare a codului este minimizat.
  5. Modele orientate pe proces și orientate pe fire susținute de RPC.

Referinte: