La Remote Procedure Call o RPC è una tecnica potente per costruire applicazioni distribuite basate su client-server. È nota anche come chiamata di funzione o chiamata di subroutine. Una chiamata di procedura remota si verifica quando un programma per computer provoca l'esecuzione di una procedura in uno spazio di indirizzi diverso, codificato come chiamata di procedura locale, senza che il programmatore dichiari esplicitamente i dettagli per l'interazione remota. Il programmatore scrive essenzialmente lo stesso codice indipendentemente dal fatto che la subroutine sia locale rispetto al programma in esecuzione o remota. Questa è una forma di interazione client-server implementata tramite un sistema di passaggio di messaggi di richiesta-risposta.
Il modello RPC implica trasparenza della posizione che le procedure di chiamata sono in gran parte le stesse, sia locali che remote. Solitamente non sono identiche, per cui è possibile distinguere le chiamate locali da quelle remote. Le chiamate remote sono generalmente molto più lente e meno affidabili delle chiamate locali, quindi è importante distinguerle.
Le RPC sono una forma di comunicazione tra processi (IPC), in quanto processi diversi hanno spazi di indirizzi diversi. Hanno spazi di indirizzi virtuali distinti sulla stessa macchina host, anche se lo spazio di indirizzi fisici è lo stesso. Mentre se si trovano su host diversi, lo spazio degli indirizzi fisici è diverso.
Come effettuare una chiamata di procedura remota
L'ambiente chiamante viene sospeso, i parametri della procedura vengono trasferiti attraverso la rete all'ambiente in cui deve essere eseguita la procedura e lì la procedura viene eseguita.
Quando la procedura termina e produce i suoi risultati, viene trasferita nuovamente nell'ambiente chiamante, dove l'esecuzione riprende come se tornasse da una normale chiamata di procedura.
NOTA: RPC è particolarmente adatto per l'interazione client-server (ad esempio, risposta a query) in cui il flusso di controllo si alterna tra il chiamante e il chiamato. Concettualmente, il client e il server non vengono eseguiti simultaneamente; invece, il thread di esecuzione salta dal chiamante al chiamato e poi viceversa.
Tipi di RPC
Esistono tre tipi di chiamata di procedura remota (RPC) in un sistema operativo, ad esempio:
1. RPC di richiamata
Questo tipo di RPC consente un paradigma P2P tra i processi partecipanti. Aiuta un processo a essere sia servizi client che server. Callback RPC ha le seguenti funzioni, come ad esempio:
derivati parziali nel lattice
- Problemi applicativi interattivi elaborati in remoto.
- Offre server con gestione client.
- La richiamata fa attendere il processo client.
- Gestisci i deadlock delle richiamate.
- Facilita un paradigma peer-to-peer tra i processi partecipanti.
2. Trasmettere RPC
Broadcast RPC è la richiesta di un client trasmessa sulla rete, elaborata da tutti i server con il metodo per elaborare tale richiesta. Broadcast RPC ha le seguenti funzioni, come ad esempio:
- Consente di specificare che il messaggio di richiesta del client deve essere trasmesso.
- Puoi dichiarare porte di trasmissione.
- Aiuta a ridurre il carico sulla rete fisica.
3. RPC in modalità batch
L'RPC in modalità batch consente di accodare, separare le richieste RPC in un buffer di trasmissione, sul lato client, e quindi di inviarle su una rete in un batch al server. L'RPC in modalità batch presenta le seguenti funzioni, tra cui:
- Riduce al minimo il sovraccarico coinvolto nell'invio di una richiesta inviandole attraverso la rete in un batch al server.
- Questo tipo di protocollo RPC è efficace solo per un'applicazione che necessita di tariffe di chiamata inferiori.
- Ha bisogno di un protocollo di trasmissione affidabile.
Cosa fa RPC?
Quando le istruzioni di programma che utilizzano il framework RPC vengono compilate in un programma eseguibile, nel codice compilato viene incluso uno stub che rappresenta il codice della procedura remota.
Quando il programma viene eseguito e viene emessa la chiamata alla procedura, lo stub riceve la richiesta e la inoltra a un programma runtime client nel computer locale. La prima volta che viene richiamato lo stub del client, contatta un server dei nomi per determinare l'indirizzo di trasporto in cui risiede il server.
Il programma runtime client sa come indirizzare il computer remoto e l'applicazione server e invia il messaggio attraverso la rete che richiede la procedura remota. Allo stesso modo, il server include un programma runtime e uno stub che si interfaccia con la procedura remota stessa, e i protocolli di richiesta di risposta vengono restituiti allo stesso modo.
Caratteristiche dell'RPC
In un sistema operativo, la chiamata di procedura remota (RPC) ha le seguenti funzionalità, come ad esempio:
- RPC nasconde all'utente la complessità del processo di passaggio dei messaggi.
- RPC utilizza solo livelli specifici del modello OSI come il livello di trasporto.
- I client possono comunicare con il server utilizzando linguaggi di livello superiore.
- RPC funziona bene sia con ambienti locali che con ambienti remoti.
- Il programma di RPC è scritto in codice semplice ed è facilmente comprensibile dal programmatore.
- Il sistema operativo può gestire facilmente processi e thread coinvolti in RPC.
- Il sistema operativo nasconde all'utente le astrazioni di RPC.
Come funziona l'RPC?
Quando viene richiamata una chiamata di procedura remota, l'ambiente chiamante viene sospeso, i parametri della procedura vengono trasferiti attraverso la rete all'ambiente in cui la procedura deve essere eseguita e la procedura viene quindi eseguita in quell'ambiente.
comando sed
Al termine della procedura, i risultati vengono trasferiti nuovamente all'ambiente chiamante, dove l'esecuzione riprende come se tornasse da una normale chiamata di procedura.
Una chiamata di procedura remota (RPC) funziona nei seguenti passaggi in un sistema operativo:
Passo 1: Il client, lo stub del client e il runtime RPC vengono eseguiti sul computer client.
Passo 2: Un client avvia un processo di stub del client passando i parametri nel solito modo. Viene chiamato il confezionamento dei parametri della procedura smistamento . Lo stub del client viene archiviato nello spazio degli indirizzi del client e richiede inoltre al runtime RPC locale di rispedire allo stub del server.
Passaggio 3: In questa fase l'utente può accedere all'RPC effettuando regolare Chiamata Procedurale Locale. RPC Runtime gestisce la trasmissione di messaggi tra la rete attraverso client e server ed esegue anche il lavoro di ritrasmissione, riconoscimento, instradamento e crittografia.
Passaggio 4: Dopo aver completato la procedura del server, ritorna allo stub del server, che comprime (esegue il marshall) i valori restituiti in un messaggio. Lo stub del server invia quindi un messaggio al livello di trasporto.
Passaggio 5: In questa fase, il livello di trasporto restituisce il messaggio risultato al livello di trasporto del client, che restituisce un messaggio allo stub del client.
Passaggio 6: In questa fase, lo stub del client effettua il demarshall (decompressione) dei parametri di ritorno nel pacchetto risultante e il processo di esecuzione ritorna al chiamante.
Problemi di chiamata di procedura remota (RPC)
In un sistema operativo, la chiamata di procedura remota o RPC ha dovuto affrontare alcuni problemi che devono essere risolti, come ad esempio:
dormire in Javascript
1. Tempo di esecuzione RPC
Il sistema runtime RPC è una libreria di routine e servizi che gestiscono le comunicazioni di rete che sono alla base del meccanismo RPC. Nel corso di una chiamata RPC, il codice dei sistemi runtime lato client e lato server gestisce l'associazione, stabilisce le comunicazioni su un protocollo appropriato, passa i dati della chiamata tra il client e il server e gestisce gli errori di comunicazione.
parola chiave statica in Java
2. Tronco
La funzione dello stub è fornire trasparenza al codice dell'applicazione scritto dal programmatore.
3. Vincolante
Come fa il cliente a sapere chi chiamare e dove risiede il servizio?
La soluzione più flessibile consiste nell'utilizzare l'associazione dinamica e trovare il server in fase di esecuzione quando viene creata per la prima volta la RPC. La prima volta che viene richiamato lo stub del client, contatta un server dei nomi per determinare l'indirizzo di trasporto in cui risiede il server. La rilegatura è composta da due parti:
4. La semantica chiamante associata a RPC
È principalmente classificato nelle seguenti scelte,
Caratteristiche dell'RPC
Ecco le caratteristiche essenziali della chiamata di procedura remota:
- La procedura chiamata si trova in un altro processo, che probabilmente risiederà in un'altra macchina.
- I processi non condividono lo spazio degli indirizzi.
- I parametri vengono passati solo tramite valori.
- RPC viene eseguito nell'ambiente del processo server.
- Non offre accesso all'ambiente della procedura chiamante.
Vantaggi dell'RPC
Ecco alcuni vantaggi o benefici di RPC, come ad esempio:
- Il metodo RPC aiuta i client a comunicare con i server mediante l'uso convenzionale di chiamate di procedura in linguaggi di alto livello.
- Il metodo RPC è modellato sulla chiamata di procedura locale, ma è molto probabile che la procedura venga eseguita in un processo diverso e in genere su un computer diverso.
- RPC supporta modelli orientati ai processi e ai thread.
- RPC rende nascosto all'utente il meccanismo interno di passaggio dei messaggi.
- Lo sforzo necessario per riscrivere e sviluppare nuovamente il codice è minimo.
- Le chiamate di procedura remota possono essere utilizzate per la distribuzione e l'ambiente locale.
- Impegna molti dei livelli del protocollo per migliorare le prestazioni.
- RPC fornisce l'astrazione. Ad esempio, la natura dello scambio di messaggi della comunicazione di rete rimane nascosta all'utente.
- RPC consente l'utilizzo delle applicazioni in un ambiente distribuito e non solo nell'ambiente locale.
- Con il codice RPC, gli sforzi di riscrittura e ri-sviluppo sono ridotti al minimo.
- Modelli orientati ai processi e ai thread supportati da RPC.
Svantaggi dell'RPC
Di seguito sono riportati alcuni svantaggi o inconvenienti derivanti dall'utilizzo di RPC, ad esempio:
- La chiamata di procedura remota passa i parametri solo in base ai valori e ai valori dei puntatori, il che non è consentito.
- Il tempo di chiamata (e restituzione) della procedura remota (ovvero i costi generali) può essere significativamente inferiore rispetto a una procedura locale.
- Questo meccanismo è altamente vulnerabile al fallimento poiché coinvolge un sistema di comunicazione, un'altra macchina e un altro processo.
- Il concetto RPC può essere implementato in diversi modi, il che non può essere standard.
- Non offre alcuna flessibilità in RPC per l'architettura hardware poiché è principalmente basata sull'interazione.
- Il costo del processo aumenta a causa di una chiamata di procedura remota.