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: