Protocolul RPC (Remote Procedure Call) în sistemul distribuit
⚡ Rezumat inteligent
Apelul de procedură la distanță (RPC) este un protocol de comunicare interproces care permite unui program să execute o procedură într-un alt spațiu de adrese sau mașină, ascunzând detaliile rețelei în spatele unui apel de funcție local obișnuit în sistemele client-server distribuite.

Ce este RPC?
Apel de procedură la distanță (RPC) este o comunicarea intraprocesuala Tehnică utilizată pentru aplicațiile client-server. Forma completă a RPC este Remote Procedure Call (Apel de procedură la distanță). Mecanismele RPC sunt utilizate atunci când un program de calculator determină executarea unei proceduri sau a unei subrutine într-un spațiu de adrese diferit, codificată ca un apel de procedură normal, fără ca programatorul să codifice explicit detaliile pentru interacțiunea la distanță.
Acest apel de procedură gestionează și protocoale de transport de nivel scăzut, cum ar fi UDP și TCP/IP, pentru a transporta datele mesajelor între programe.
Tipuri de RPC
Trei tipuri de RPC sunt:
- RPC de apel invers
- Difuzați RPC
- RPC în modul lot
RPC de apel invers
Acest tip de RPC permite o paradigmă peer-to-peer (P2P) între procesele participante. Ajută un proces să acționeze atât ca client, cât și ca server.
Funcțiile RPC de apel invers:
- Gestionează problemele aplicațiilor interactive, procesate de la distanță.
- Oferă serverului handle-ul clientului.
- Funcția de apel invers face ca procesul client să aștepte.
- Gestionează blocajele de apel invers.
- Facilitează o paradigmă de tip peer-to-peer între procesele participante.
Difuzați RPC
RPC de difuzare este o cerere a clientului care este difuzată în rețea și procesată de toate serverele care au metoda de procesare a acelei cereri.
Funcțiile Broadcast RPC:
- Vă permite să specificați dacă mesajul de solicitare al clientului trebuie difuzat.
- Puteți declara porturi de difuzare.
- Ajută la reducerea încărcării rețelei fizice.
RPC în modul lot
RPC în mod batch ajută la plasarea în coadă a cererilor RPC separate într-un buffer de transmisie pe partea clientului și apoi la trimiterea lor printr-o rețea într-un singur lot către server.
Funcțiile RPC în mod batch:
- Reduce la minimum costurile suplimentare implicate în trimiterea unei cereri, deoarece trimite cererile prin rețea într-un singur lot către server.
- Acest tip de protocol RPC este eficient doar pentru aplicațiile care necesită rate de apel mai mici.
- Are nevoie de un protocol de transmisie fiabil.
RPC Architectură
Arhitectura RPC are în principal cinci componente ale programului:
- Client
- Stub client
- RPC Runtime
- Server Stub
- server de
RPC Architectură
Cum funcționează RPC?
Următorii pași au loc în timpul procesului RPC:
Pas 1) Clientul, stub-ul clientului și o instanță a runtime-ului RPC se execută pe mașina client.
Pas 2) Clientul pornește un proces de tip stub client prin transmiterea parametrilor în mod obișnuit. Stub-ul client este stocat în propriul spațiu de adrese al clientului. De asemenea, solicită runtime-ului RPC local să trimită cererea către stub-ul serverului.
Pas 3) În această etapă, utilizatorul accesează RPC efectuând un apel de procedură local obișnuit. Runtime-ul RPC gestionează transmiterea mesajelor între client și server prin rețea. De asemenea, îndeplinește funcțiile de retransmisie, confirmare, rutare și criptare.
Pas 4) După finalizarea procedurii serverului, execuția revine la stub-ul serverului, care împachetează (marshalizează) valorile returnate într-un mesaj. Stub-ul serverului trimite apoi mesajul înapoi la nivelul de transport.
Pas 5) În acest pas, stratul de transport trimite mesajul rezultat înapoi către stratul de transport al clientului, care returnează mesajul către stub-ul clientului.
Pas 6) În această etapă, stub-ul clientului demarshalează (despachetează) parametrii returnați în pachetul rezultat, iar execuția revine la apelant.
Caracteristicile RPC
Iată care sunt caracteristicile esențiale ale RPC:
- Procedura apelată se află într-un alt proces, care probabil se află pe 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 apelante.
Caracteristicile RPC
Iată care sunt caracteristicile importante ale RPC:
- Sintaxă simplă de apel.
- Oferă o semantică cunoscută.
- Oferă o interfață bine definită.
- Poate comunica între procese de pe aceeași mașină sau de pe mașini diferite.
Avantajele RPC
Iată avantajele/beneficiile RPC:
- RPC ajută clienții să comunice cu serverele prin utilizarea convențională a apelurilor de procedură în limbaje de nivel înalt.
- RPC este modelat pe apelul procedurii locale, dar procedura apelată este cel mai probabil executată într-un proces diferit și de obicei pe un computer diferit.
- RPC acceptă modele orientate pe procese și orientate pe fire de execuție.
- RPC face ca mecanismul intern de transmitere a mesajelor să fie ascuns utilizatorului.
- Angajează multe dintre straturile de protocol pentru a îmbunătăți performanța.
- RPC oferă abdomentracde exemplu, natura de transmitere a mesajelor a comunicării în rețea rămâne ascunsă utilizatorului.
- RPC poate fi utilizat atât în medii distribuite, cât și locale.
- Efortul necesar pentru rescrierea și redezvoltarea codului este minim.
Dezavantajele RPC
Iată care sunt dezavantajele/dezavantajele utilizării RPC:
- Apelul de procedură la distanță transmite parametrii doar prin valori; valorile pointer (de referință) nu sunt permise.
- Timpul de apel (și de returnare) a unei proceduri la distanță - suprasarcina - este semnificativ mai mare decât în cazul unei proceduri locale.
- Acest mecanism este extrem de vulnerabil la defecțiuni, deoarece implică un sistem de comunicații, o altă mașină și un alt proces.
- Conceptul RPC poate fi implementat în diferite moduri, deci nu există un standard unic.
- Nu oferă flexibilitate pentru arhitectura hardware, deoarece se bazează în mare parte pe interacțiune.
- Costul procesului crește din cauza apelului de procedură la distanță.

