Remote Procedure Call (RPC) Protocol i distribuert system

โšก Smart oppsummering

Remote Procedure Call (RPC) er en kommunikasjonsprotokoll mellom prosesser som lar et program utfรธre en prosedyre i et annet adresserom eller pรฅ en annen maskin, og skjuler nettverksdetaljer bak et vanlig lokalt funksjonskall i distribuerte klient-server-systemer.

  • ๐Ÿ“ž Definisjon: RPC lar en klient kalle en prosedyre pรฅ en ekstern server som om det var et lokalt kall.
  • ๐Ÿ—‚๏ธ typer: Tilbakekalls-, kringkastings- og batchmodus-RPC er forskjellige i hvordan forespรธrsler rutes og settes i kรธ.
  • ๐Ÿ—๏ธ Archilรฆre: Fem deler samarbeider pรฅ hvert kall: klient, klientstub, RPC-kjรธretid, serverstub og server.
  • ๐Ÿ”„ Slik fungerer det: Stubber marshal-parametere inn i en melding og avmarshaler resultatet som returneres til den som ringer.
  • ๐Ÿ‡ง๐Ÿ‡ท Avveininger: RPC forenkler distribuert kode, men legger til nettverksoverhead og feilpunkter i motsetning til lokale anrop.
  • ๐Ÿค– AI-vinkel: gRPC serverer maskinlรฆringsmodeller mellom mikrotjenester, og Copilot fremskynder skriving av RPC-stubber.

Ekstern prosedyrekall (RPC) i distribuert system

Hva er RPC?

Remote Procedure Call (RPC) er en kommunikasjon mellom prosesser teknikk som brukes for klient-server-applikasjoner. Den fulle formen for RPC er Remote Procedure Call. RPC-mekanismer brukes nรฅr et dataprogram fรฅr en prosedyre eller subrutine til รฅ kjรธre i et annet adresserom, kodet som et normalt prosedyrekall uten at programmereren eksplisitt koder detaljene for den eksterne interaksjonen.

Dette prosedyrekallet administrerer ogsรฅ lavnivรฅtransportprotokoller, som UDP og TCP/IP, for รฅ frakte meldingsdata mellom programmer.

Typer RPC

Tre typer RPC er:

  • Tilbakeringing RPC
  • Kringkast RPC
  • Batch-modus RPC

Tilbakeringing RPC

Denne typen RPC muliggjรธr et peer-to-peer (P2P)-paradigme mellom deltakende prosesser. Det hjelper en prosess รฅ fungere som bรฅde en klient og en server.

Funksjoner for tilbakeringings-RPC:

  • Hรฅndterer eksternt behandlede, interaktive applikasjonsproblemer.
  • Gir serveren klientens handle.
  • Tilbakeringing fรฅr klientprosessen til รฅ vente.
  • Hรฅndterer vranglรฅser ved tilbakeringing.
  • Det legger til rette for et likemann-til-likemann-paradigme mellom deltakende prosesser.

Kringkast RPC

En kringkastet RPC er en klientforespรธrsel som kringkastes pรฅ nettverket og behandles av alle servere som har metoden for รฅ behandle forespรธrselen.

Funksjoner til kringkastings-RPC:

  • Lar deg spesifisere at klientens forespรธrselsmelding mรฅ kringkastes.
  • Du kan deklarere kringkastingsporter.
  • Det bidrar til รฅ redusere belastningen pรฅ det fysiske nettverket.

Batch-modus RPC

Batch-modus RPC hjelper med รฅ legge separate RPC-forespรธrsler i kรธ i en overfรธringsbuffer pรฅ klientsiden, og deretter sende dem over et nettverk i รฉn batch til serveren.

Funksjoner til batchmodus RPC:

  • Det minimerer administrasjonskostnadene forbundet med รฅ sende en forespรธrsel, ettersom forespรธrsler sendes over nettverket i รฉn batch til serveren.
  • Denne typen RPC-protokoll er bare effektiv for applikasjoner som trenger lavere samtalerater.
  • Den trenger en pรฅlitelig overfรธringsprotokoll.

RPC Architecture

RPC-arkitektur har hovedsakelig fem komponenter i programmet:

  1. kunde
  2. Klientstubb
  3. RPC kjรธretid
  4. Server Stubb
  5. Server

RPC Architecture

RPC Architecture

Hvordan fungerer RPC?

Fรธlgende trinn finner sted under RPC-prosessen:

Trinn 1) Klienten, klientstubben og รฉn forekomst av RPC-kjรธretidsprogrammet kjรธres pรฅ klientmaskinen.

Trinn 2) Klienten starter en klientstub-prosess ved รฅ sende parametere pรฅ vanlig mรฅte. Klientstubben lagres i klientens eget adresseomrรฅde. Den ber ogsรฅ den lokale RPC Runtime om รฅ sende forespรธrselen til serverstubben.

Trinn 3) I denne fasen fรฅr brukeren tilgang til RPC ved รฅ foreta et vanlig lokalt prosedyrekall. RPC Runtime administrerer overfรธringen av meldinger mellom klienten og serveren over nettverket. Den utfรธrer ogsรฅ jobben med retransmisjon, bekreftelse, ruting og kryptering.

Trinn 4) Etter at serverprosedyren er fullfรธrt, gรฅr kjรธringen tilbake til serverstubben, som pakker (marshalerer) returverdiene i en melding. Serverstubben sender deretter meldingen tilbake til transportlaget.

Trinn 5) I dette trinnet sender transportlaget resultatmeldingen tilbake til klientens transportlag, som returnerer meldingen til klientstubben.

Trinn 6) I denne fasen demarshaler klienten (pakker ut) returparametrene i den resulterende pakken, og kjรธringen returnerer til den som kaller.

Kjennetegn ved RPC

Her er de viktigste egenskapene til RPC:

  • Den kalte prosedyren er i en annen prosess, som sannsynligvis befinner seg pรฅ en annen maskin.
  • Prosessene deler ikke adresseplass.
  • Parametre sendes kun av verdier.
  • RPC kjรธres i miljรธet til serverprosessen.
  • Den gir ikke tilgang til den kallende prosedyrens miljรธ.

Funksjoner av RPC

Her er de viktige funksjonene til RPC:

  • Enkel anropssyntaks.
  • Tilbyr kjent semantikk.
  • Gir et veldefinert grensesnitt.
  • Den kan kommunisere mellom prosesser pรฅ samme eller forskjellige maskiner.

Fordeler med RPC

Her er fordelene/fordelene med RPC:

  • RPC hjelper klienter med รฅ kommunisere med servere gjennom konvensjonell bruk av prosedyrekall i hรธynivรฅsprรฅk.
  • RPC er modellert etter det lokale prosedyrekallet, men den kalte prosedyren utfรธres mest sannsynlig i en annen prosess og vanligvis pรฅ en annen datamaskin.
  • RPC stรธtter prosessorienterte og trรฅdorienterte modeller.
  • RPC gjรธr den interne meldingsoverfรธringsmekanismen skjult for brukeren.
  • Den forplikter mange av protokolllagene for รฅ forbedre ytelsen.
  • RPC gir magemusklertracsjon; for eksempel forblir meldingsoverfรธringskarakteren til nettverkskommunikasjon skjult for brukeren.
  • RPC kan brukes i bรฅde distribuerte og lokale miljรธer.
  • Innsatsen som kreves for รฅ omskrive og utvikle koden pรฅ nytt er minimal.

Ulemper med RPC

Her er ulempene/ulempene ved รฅ bruke RPC:

  • Remote Procedure Call sender kun parametere etter verdier; pekerverdier (referanseverdier) er ikke tillatt.
  • Tiden for fjernprosedyrekall (og retur) โ€“ overhead โ€“ er betydelig hรธyere enn for en lokal prosedyre.
  • Denne mekanismen er svรฆrt sรฅrbar for feil, ettersom den involverer et kommunikasjonssystem, en annen maskin og en annen prosess.
  • RPC-konseptet kan implementeres pรฅ forskjellige mรฅter, sรฅ det finnes ingen enkelt standard.
  • Den tilbyr ikke fleksibilitet for maskinvarearkitektur, ettersom den stort sett er interaksjonsbasert.
  • Kostnaden for prosessen รธker pรฅ grunn av det eksterne prosedyrekallet.

Spรธrsmรฅl og svar

RPC eksponerer handlinger som eksterne prosedyrer, mens REST eksponerer data som ressurser som nรฅs via HTTP-verb. RPC fรธles som รฅ kalle en lokal funksjon, mens REST fokuserer pรฅ ressurser og tilstand.

gRPC er Googles moderne, hรธytytende RPC-rammeverk. Det bruker HTTP/2 og protokoll Buffers, og stรธtter toveis strรธmming, noe som gjรธr den populรฆr for mikrotjenestekommunikasjon.

RPC kan vรฆre begge deler. Et synkront kall blokkerer inntil serveren returnerer et resultat, mens et asynkront kall returnerer umiddelbart og hรฅndterer svaret senere. Rammeverk som gRPC stรธtter begge stilene.

RPC er en form for IPC som fungerer pรฅ tvers av separate maskiner. Mens mange IPC-metoder deler minne pรฅ รฉn vert, utveksler RPC meldinger over et nettverk slik at prosesser pรฅ forskjellige datamaskiner kan samarbeide.

Vanlige RPC-implementeringer inkluderer gRPC, Apache Thrift, XML-RPC, JSON-RPC og Java RMI. De varierer i dataformat og transport, men alle lar en klient kalle en prosedyre pรฅ en ekstern server.

RPC er ikke sikker som standard; sikkerheten avhenger av transporten. Implementeringer legger til TLS-kryptering, autentiseringstokener og tilgangskontroller for รฅ beskytte anrop.

Maskinlรฆringsplattformer bruker RPC, spesielt gRPC, til รฅ levere modellprediksjoner mellom mikrotjenester. En klient sender funksjoner og mottar et inferensresultat, keeping AI-systemer er raske og lรธst koblet.

Ja. GitHub Copilot kan sette opp .proto-tjenestedefinisjoner, klientstubber og serverhรฅndterere for gRPC. Utviklere bรธr fortsatt gjennomgรฅ genererte grensesnitt, feilhรฅndtering og versjonering fรธr de distribueres til produksjon.

Oppsummer dette innlegget med: