Chiamata di procedura remota (RPC) è una tecnica potente per costruire applicazioni distribuite basate su client-server . Si basa sull'estensione della chiamata di procedura locale convenzionale in modo che il file non è necessario che la procedura chiamata esista nello stesso spazio di indirizzi della procedura chiamante . I due processi potrebbero trovarsi sullo stesso sistema oppure su sistemi diversi collegati da una rete.
Quando si effettua una chiamata di procedura remota:

1. 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.
strsep c
2. Quando la procedura termina e produce i suoi risultati, i suoi risultati vengono trasferiti nuovamente all'ambiente chiamante, dove l'esecuzione riprende come se tornasse da una normale chiamata di procedura.
NOTA: RPC è particolarmente adatto per client-server (ad es. risposta alla query) interazione in cui il flusso di controllo alterna tra il chiamante e il chiamato . Concettualmente, il client e il server non vengono eseguiti entrambi contemporaneamente. Invece, il thread di esecuzione salta dal chiamante al chiamato e poi viceversa.
Funzionamento dell'RPC

Durante un RPC vengono eseguiti i seguenti passaggi:
- Un client invoca a procedura dello stub del cliente , passando i parametri nel solito modo. Lo stub del client risiede nello spazio degli indirizzi del client.
- La matrice del cliente marescialli (pacchetto) i parametri in un messaggio. Il marshalling include la conversione della rappresentazione dei parametri in un formato standard e la copia di ciascun parametro nel messaggio.
- Lo stub del client passa il messaggio al livello di trasporto, che lo invia alla macchina server remota.
- Sul server, il livello di trasporto passa il messaggio a uno stub del server, che demarshalls (disimballare) i parametri e chiama la routine del server desiderata utilizzando il normale meccanismo di chiamata della procedura.
- Una volta completata la procedura del server, ritorna allo stub del server (ad esempio, tramite una normale procedura di ritorno di chiamata) , che suddivide i valori restituiti in un messaggio. Lo stub del server trasmette quindi il messaggio al livello di trasporto.
- Il livello di trasporto invia il messaggio risultato al livello di trasporto del client, che restituisce il messaggio allo stub del client.
- Lo stub del client effettua il marshalling dei parametri di ritorno e l'esecuzione ritorna al chiamante.
Le considerazioni chiave per la progettazione e l'implementazione dei sistemi RPC sono:
- Sicurezza: poiché RPC implica la comunicazione sulla rete, la sicurezza è una delle principali preoccupazioni. È necessario implementare misure quali l'autenticazione, la crittografia e l'autorizzazione per impedire l'accesso non autorizzato e proteggere i dati sensibili. Scalabilità: all'aumentare del numero di client e server, le prestazioni del sistema RPC non devono peggiorare. Le tecniche di bilanciamento del carico e l'utilizzo efficiente delle risorse sono importanti per la scalabilità. Tolleranza agli errori: il sistema RPC deve essere resistente agli errori di rete, ai crash del server e ad altri eventi imprevisti. Misure come ridondanza, failover e degradazione graduale possono contribuire a garantire la tolleranza agli errori. Standardizzazione: sono disponibili diversi framework e protocolli RPC ed è importante sceglierne uno standardizzato e ampiamente accettato per garantire l'interoperabilità e la compatibilità tra diverse piattaforme e linguaggi di programmazione. Ottimizzazione delle prestazioni: è importante ottimizzare il sistema RPC per ottenere prestazioni ottimali. Ciò potrebbe comportare l'ottimizzazione del protocollo di rete, la riduzione al minimo dei dati trasferiti sulla rete e la riduzione della latenza e del sovraccarico associati alle chiamate RPC.
PROBLEMI RPC :
Problemi che devono essere affrontati:
Madhuri ha detto
1. Tempo di esecuzione RPC:
Il sistema runtime RPC è una libreria di routine e un insieme di 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 viene gestito associazione, stabilire comunicazioni su un protocollo appropriato, passare i dati delle chiamate tra il client e il server e gestire gli errori di comunicazione.
2. Tronco:
La funzione dello stub è quella di fornire trasparenza al codice dell'applicazione scritto dal programmatore .
- Sul lato client, lo stub gestisce l'interfaccia tra la chiamata di procedura locale del client e il sistema runtime, effettuando il marshalling e l'unmarshalling dei dati, invocando il protocollo runtime RPC e, se richiesto, eseguendo alcuni passaggi di associazione. Sul lato server, lo stub fornisce un'interfaccia simile tra il sistema runtime e le procedure del gestore locale eseguite dal server.
3. Vincolo: 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:
- Noi:
- Localizzazione:
- Un Server che ha un servizio da offrire ne esporta un'interfaccia. L'esportazione di un'interfaccia la registra nel sistema in modo che i client possano utilizzarla. Un client deve importare un'interfaccia (esportata) prima che la comunicazione possa iniziare.
4. La semantica della chiamata associata a RPC:
È principalmente classificato nelle seguenti scelte:
- Riprovare il messaggio di richiesta –
Se riprovare a inviare un messaggio di richiesta quando un server ha fallito o il destinatario non ha ricevuto il messaggio. Filtraggio duplicato –
Rimuovi le richieste del server duplicate. Ritrasmissione dei risultati –
Per inviare nuovamente i messaggi persi senza rieseguire le operazioni sul lato server.
VANTAGGI:
math.pow java
- RPC fornisce ASTRAZIONE cioè la natura di scambio di messaggi della comunicazione di rete è nascosta all'utente.
- RPC spesso omette molti livelli del protocollo per migliorare le prestazioni. Anche un piccolo miglioramento delle prestazioni è importante perché un programma può richiamare spesso RPC.
- RPC consente l'utilizzo delle applicazioni nell'ambiente distribuito, non solo nell'ambiente locale.
- Con lo sforzo di riscrittura/ri-sviluppo del codice RPC è ridotto al minimo.
- Modelli orientati ai processi e ai thread supportati da RPC.
Riferimenti:
- https://web.cs.wpi.edu/~cs4514/b98/week8-rpc/week8-rpc.html
- https://users.cs.cf.ac.uk/Dave.Marshall/C/node33.html
- Reti di computer: un approccio top-down di FOROUZAN