Protocollo RPC (Remote Procedure Call) nel sistema distribuito

⚡ Riepilogo intelligente

La chiamata di procedura remota (RPC) è un protocollo di comunicazione interprocesso che consente a un programma di eseguire una procedura in un altro spazio di indirizzamento o su un'altra macchina, nascondendo i dettagli di rete dietro una normale chiamata di funzione locale nei sistemi client-server distribuiti.

  • 📞 Definizione: RPC consente a un client di richiamare una procedura su un server remoto come se fosse una chiamata locale.
  • 🗂️ tipi: Le modalità RPC di callback, broadcast e batch differiscono per il modo in cui le richieste vengono instradate e messe in coda.
  • ???? ️ Architecnologia: Cinque componenti cooperano in ogni chiamata: client, stub del client, runtime RPC, stub del server e server.
  • 🔄 Come funziona: Gli stub serializzano i parametri in un messaggio e deserializzano il risultato restituito al chiamante.
  • Compromessi: RPC semplifica il codice distribuito ma introduce un sovraccarico di rete e potenziali punti di errore rispetto alle chiamate locali.
  • 🤖 Angolo dell'IA: gRPC funge da server per i modelli di machine learning tra i microservizi, mentre Copilot velocizza la scrittura degli stub RPC.

Chiamata di procedura remota (RPC) in un sistema distribuito

Cos'è l'RPC?

Remote Procedure Call (RPC) is an comunicazione tra processi Tecnica utilizzata per applicazioni client-server. L'acronimo RPC sta per Remote Procedure Call (chiamata di procedura remota). I meccanismi RPC vengono utilizzati quando un programma per computer fa sì che una procedura o una subroutine venga eseguita in uno spazio di indirizzamento diverso, codificata come una normale chiamata di procedura senza che il programmatore codifichi esplicitamente i dettagli per l'interazione remota.

Questa chiamata di procedura gestisce anche i protocolli di trasporto di basso livello, come UDP e TCP/IP, per trasferire i dati dei messaggi tra i programmi.

Tipi di RPC

Tre tipi di RPC sono:

  • RPC di richiamata
  • Trasmetti RPC
  • RPC in modalità batch

RPC di richiamata

Questo tipo di RPC abilita un paradigma peer-to-peer (P2P) tra i processi partecipanti. Consente a un processo di agire sia come client che come server.

Funzioni dell'RPC di richiamata:

  • Gestisce i problemi delle applicazioni interattive elaborate da remoto.
  • Fornisce al server l'handle del client.
  • La funzione di callback mette in attesa il processo client.
  • Gestisce i deadlock delle callback.
  • Facilita un paradigma peer-to-peer tra i processi partecipanti.

Trasmetti RPC

La chiamata RPC broadcast è una richiesta del client che viene trasmessa in rete ed elaborata da tutti i server che dispongono del metodo per elaborare tale richiesta.

Funzioni di Broadcast RPC:

  • Consente di specificare che il messaggio di richiesta del client deve essere trasmesso in broadcast.
  • Puoi dichiarare porte di trasmissione.
  • Contribuisce a ridurre il carico sulla rete fisica.

RPC in modalità batch

La modalità batch RPC consente di accodare singole richieste RPC in un buffer di trasmissione sul lato client e di inviarle poi in un unico batch al server tramite la rete.

Funzioni della RPC in modalità batch:

  • Riduce al minimo il sovraccarico derivante dall'invio di una richiesta, poiché invia le richieste in un unico batch sulla rete al server.
  • Questo tipo di protocollo RPC è efficiente solo per le applicazioni che necessitano di frequenze di chiamata inferiori.
  • Ha bisogno di un protocollo di trasmissione affidabile.

RPC Architectura

L'architettura RPC ha principalmente cinque componenti del programma:

  1. .
  2. Stub del cliente
  3. Tempo di esecuzione RPC
  4. Stub del server
  5. server

RPC Architectura

RPC Architectura

Come funziona l'RPC?

Durante il processo RPC si verificano i seguenti passaggi:

Passo 1) Il client, lo stub del client e un'istanza del runtime RPC vengono eseguiti sulla macchina client.

Passo 2) Il client avvia un processo stub client passando i parametri nel modo consueto. Lo stub client viene memorizzato nello spazio degli indirizzi del client stesso. Richiede inoltre al runtime RPC locale di inoltrare la richiesta allo stub server.

Passo 3) In questa fase, l'utente accede al protocollo RPC effettuando una normale chiamata di procedura locale. Il runtime RPC gestisce la trasmissione dei messaggi tra client e server attraverso la rete. Si occupa inoltre della ritrasmissione, della conferma di ricezione, dell'instradamento e della crittografia.

Passo 4) Dopo aver completato la procedura del server, l'esecuzione ritorna allo stub del server, che impacchetta (sequenza) i valori di ritorno in un messaggio. Lo stub del server invia quindi il messaggio al livello di trasporto.

Passo 5) In questa fase, il livello di trasporto invia il messaggio risultante al livello di trasporto del client, il quale a sua volta lo restituisce allo stub del client.

Passo 6) In questa fase, lo stub del client deserializza (estrae) i parametri di ritorno dal pacchetto risultante e l'esecuzione ritorna al chiamante.

Caratteristiche dell'RPC

Ecco le caratteristiche essenziali di RPC:

  • La procedura chiamata si trova all'interno di un altro processo, che probabilmente risiede su 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 di chiamata.

Caratteristiche dell'RPC

Ecco le caratteristiche importanti di RPC:

  • Sintassi di chiamata semplice.
  • Offre semantica nota.
  • Fornisce un'interfaccia ben definita.
  • Può comunicare tra processi sulla stessa macchina o su macchine diverse.

Vantaggi dell'RPC

Ecco i vantaggi/benefici di RPC:

  • RPC aiuta i client a comunicare con i server attraverso l'uso convenzionale di chiamate di procedura in linguaggi di alto livello.
  • RPC si basa sul modello della chiamata di procedura locale, ma la procedura chiamata viene molto probabilmente eseguita in un processo diverso e solitamente su un computer diverso.
  • RPC supporta modelli orientati ai processi e modelli orientati ai thread.
  • RPC rende il meccanismo interno di scambio dei messaggi nascosto all'utente.
  • Impegna molti dei livelli del protocollo per migliorare le prestazioni.
  • RPC fornisce assolutatracad esempio, la natura di scambio di messaggi della comunicazione di rete rimane nascosta all'utente.
  • RPC può essere utilizzato sia in ambienti distribuiti che locali.
  • Lo sforzo necessario per riscrivere e rielaborare il codice è minimo.

Svantaggi dell'RPC

Ecco i contro/svantaggi dell'utilizzo di RPC:

  • La chiamata di procedura remota (RPC) passa i parametri solo per valore; i valori puntatore (riferimento) non sono consentiti.
  • Il tempo di chiamata (e di risposta) per una procedura remota, ovvero i costi generali, è significativamente più elevato rispetto a quello di una procedura locale.
  • Questo meccanismo è altamente vulnerabile ai guasti, poiché coinvolge un sistema di comunicazione, un'altra macchina e un altro processo.
  • Il concetto di RPC può essere implementato in diversi modi, quindi non esiste un unico standard.
  • Non offre flessibilità per l'architettura hardware, poiché si basa principalmente sull'interazione.
  • Il costo del processo aumenta a causa della chiamata di procedura remota.

DOMANDE FREQUENTI

RPC espone le azioni come procedure remote, mentre REST espone i dati come risorse accessibili tramite verbi HTTP. RPC dà la sensazione di chiamare una funzione locale; REST si concentra su risorse e stato.

gRPC è GoogleIl framework RPC moderno e ad alte prestazioni. Utilizza HTTP/2 e Protocollo Buffere supporta lo streaming bidirezionale, il che lo rende popolare per la comunicazione tra microservizi.

RPC può essere entrambe le cose. Una chiamata sincrona si blocca finché il server non restituisce un risultato, mentre una chiamata asincrona restituisce immediatamente e gestisce la risposta in un secondo momento. Framework come gRPC supportano entrambi gli stili.

RPC è una forma di IPC che funziona tra macchine separate. Mentre molti metodi IPC condividono la memoria su un singolo host, RPC scambia messaggi su una rete, consentendo così la cooperazione tra processi su computer diversi.

Le implementazioni RPC comuni includono gRPC, Apache Thrift, XML-RPC, JSON-RPC e Java RMI. Differiscono per formato dati e modalità di trasporto, ma tutti consentono a un client di richiamare una procedura su un server remoto.

RPC non è sicuro per impostazione predefinita; la sicurezza dipende dal protocollo di trasporto. Le implementazioni aggiungono la crittografia TLS, i token di autenticazione e i controlli di accesso per proteggere le chiamate.

Le piattaforme di machine learning utilizzano RPC, in particolare gRPC, per servire le previsioni del modello tra i microservizi. Un client invia le caratteristiche e riceve un risultato di inferenza, mantieniping Sistemi di intelligenza artificiale veloci e a basso accoppiamento.

Sì. GitHub Copilot può generare automaticamente definizioni di servizio .proto, stub client e gestori server per gRPC. Gli sviluppatori dovrebbero comunque rivedere le interfacce generate, la gestione degli errori e il versioning prima di implementare il codice in produzione.

Riassumi questo post con: