Remote Procedure Call (RPC) protokol i distribueret system

โšก Smart opsummering

Remote Procedure Call (RPC) er en kommunikationsprotokol mellem processer, der lader et program udfรธre en procedure i et andet adresserum eller pรฅ en anden maskine, og skjuler netvรฆrksdetaljer bag et almindeligt lokalt funktionskald i distribuerede klient-server-systemer.

  • ๐Ÿ“ž Definition: RPC lader en klient kalde en procedure pรฅ en fjernserver, som om det var et lokalt kald.
  • ๐Ÿ—‚๏ธ typer: Callback-, Broadcast- og Batch-mode RPC adskiller sig i, hvordan anmodninger dirigeres og sรฆttes i kรธ.
  • ๐Ÿ—๏ธ Archilรฆre: Fem dele samarbejder pรฅ hvert kald: klient, klientstub, RPC-kรธrselstid, serverstub og server.
  • ๐Ÿ”„ Sรฅdan Fungerer Det: Samler marshal-parametre i en besked og afmarshaler resultatet, der returneres til den, der ringer.
  • โš–๏ธ Afvejninger: RPC forenkler distribueret kode, men tilfรธjer netvรฆrksoverhead og fejlpunkter i forhold til lokale kald.
  • ๐Ÿค– AI-vinkel: gRPC leverer maskinlรฆringsmodeller mellem mikrotjenester, og Copilot fremskynder skrivning af RPC-stubs.

Fjernprocedurekald (RPC) i distribueret system

Hvad er RPC?

Remote Procedure Call (RPC) er en kommunikation mellem processer Teknik, der bruges til klient-server-applikationer. Den fulde form for RPC er Remote Procedure Call. RPC-mekanismer bruges, nรฅr et computerprogram fรฅr en procedure eller subrutine til at udfรธres i et andet adresserum, kodet som et normalt procedurekald, uden at programmรธren eksplicit koder detaljerne for den eksterne interaktion.

Dette procedurekald administrerer ogsรฅ lavniveau-transportprotokoller, sรฅsom UDP og TCP/IP, for at overfรธre meddelelsesdata mellem programmer.

Typer af RPC

Tre typer RPC er:

  • Callback RPC
  • Udsend RPC
  • Batch-mode RPC

Callback RPC

Denne type RPC muliggรธr et peer-to-peer (P2P) paradigme mellem deltagende processer. Det hjรฆlper en proces med at fungere som bรฅde en klient og en server.

Funktioner af Callback RPC:

  • Hรฅndterer fjernbehandlede, interaktive applikationsproblemer.
  • Giver serveren klientens handle.
  • Tilbagekald fรฅr klientprocessen til at vente.
  • Hรฅndterer tilbagekaldslรฅsninger.
  • Det fremmer et peer-to-peer-paradigme mellem deltagende processer.

Udsend RPC

En broadcast-RPC er en klientanmodning, der udsendes pรฅ netvรฆrket og behandles af alle servere, der har metoden til at behandle den pรฅgรฆldende anmodning.

Funktioner af Broadcast RPC:

  • Giver dig mulighed for at angive, at klientens anmodningsbesked skal udsendes.
  • Du kan erklรฆre broadcast-porte.
  • Det hjรฆlper med at reducere belastningen pรฅ det fysiske netvรฆrk.

Batch-mode RPC

Batch-mode RPC hjรฆlper med at placere separate RPC-anmodninger i kรธ i en transmissionsbuffer pรฅ klientsiden og derefter sende dem over et netvรฆrk i รฉn batch til serveren.

Funktioner i batch-tilstand RPC:

  • Det minimerer den overhead, der er involveret i at sende en anmodning, da det sender anmodninger over netvรฆrket i รฉn batch til serveren.
  • Denne type RPC-protokol er kun effektiv til applikationer, der krรฆver lavere opkaldsrater.
  • Den har brug for en pรฅlidelig transmissionsprotokol.

RPC Architecture

RPC-arkitektur har hovedsageligt fem komponenter i programmet:

  1. Klient
  2. Klient Stub
  3. RPC Runtime
  4. Server Stub
  5. Server

RPC Architecture

RPC Architecture

Hvordan fungerer RPC?

Fรธlgende trin finder sted under RPC-processen:

Trin 1) Klienten, klient-stub'en og รฉn instans af RPC-kรธrselstiden udfรธres pรฅ klientmaskinen.

Trin 2) Klienten starter en klient-stub-proces ved at overfรธre parametre pรฅ den sรฆdvanlige mรฅde. Klient-stubben gemmes i klientens eget adresseomrรฅde. Den beder ogsรฅ den lokale RPC Runtime om at sende anmodningen til server-stubben.

Trin 3) I denne fase tilgรฅr brugeren RPC ved at foretage et almindeligt lokalt procedurekald. RPC Runtime administrerer transmissionen af โ€‹โ€‹meddelelser mellem klienten og serveren pรฅ tvรฆrs af netvรฆrket. Den udfรธrer ogsรฅ opgaverne med retransmission, bekrรฆftelse, routing og kryptering.

Trin 4) Efter serverproceduren er afsluttet, vender udfรธrelsen tilbage til server-stubben, som pakker (marshalerer) returvรฆrdierne i en besked. Server-stubben sender derefter beskeden tilbage til transportlaget.

Trin 5) I dette trin sender transportlaget resultatmeddelelsen tilbage til klientens transportlag, som returnerer meddelelsen til klientstubben.

Trin 6) I denne fase demarshalerer (udpakker) klienten returparametrene i den resulterende pakke, og udfรธrelsen vender tilbage til den, der kalder pakken.

Karakteristika for RPC

Her er de vรฆsentlige egenskaber ved RPC:

  • Den kaldte procedure er i en anden proces, som sandsynligvis befinder sig pรฅ en anden maskine.
  • Processerne deler ikke adresseplads.
  • Parametre sendes kun af vรฆrdier.
  • RPC udfรธres i miljรธet af serverprocessen.
  • Den giver ikke adgang til den kaldende procedures miljรธ.

Funktioner af RPC

Her er de vigtige funktioner i RPC:

  • Simpel opkaldssyntaks.
  • Tilbyder kendt semantik.
  • Giver en veldefineret grรฆnseflade.
  • Den kan kommunikere mellem processer pรฅ den samme eller forskellige maskiner.

Fordele ved RPC

Her er fordelene/fordelene ved RPC:

  • RPC hjรฆlper klienter med at kommunikere med servere gennem den konventionelle brug af procedurekald i sprog pรฅ hรธjt niveau.
  • RPC er modelleret efter det lokale procedurekald, men den kaldte procedure udfรธres hรธjst sandsynligt i en anden proces og normalt pรฅ en anden computer.
  • RPC understรธtter procesorienterede og trรฅdorienterede modeller.
  • RPC skjuler den interne mekanisme til videregivelse af beskeder for brugeren.
  • Det forpligter mange af protokollagene til at forbedre ydeevnen.
  • RPC leverer mavemusklertraction; for eksempel forbliver netvรฆrkskommunikationens beskedvideregivende karakter skjult for brugeren.
  • RPC kan bruges i bรฅde distribuerede og lokale miljรธer.
  • Den nรธdvendige indsats for at omskrive og genudvikle koden er minimal.

Ulemper ved RPC

Her er ulemperne/ulemperne ved at bruge RPC:

  • Remote Procedure Call sender kun parametre via vรฆrdier; pointer- (reference-) vรฆrdier er ikke tilladt.
  • Tiden for fjernopkald (og returnering) af procedurer โ€“ overhead โ€“ er betydeligt hรธjere end for en lokal procedure.
  • Denne mekanisme er meget sรฅrbar overfor fejl, da den involverer et kommunikationssystem, en anden maskine og en anden proces.
  • RPC-konceptet kan implementeres pรฅ forskellige mรฅder, sรฅ der findes ingen enkelt standard.
  • Det tilbyder ikke fleksibilitet til hardwarearkitektur, da den for det meste er interaktionsbaseret.
  • Omkostningerne ved processen stiger pรฅ grund af det eksterne procedurekald.

Ofte Stillede Spรธrgsmรฅl

RPC eksponerer handlinger som eksterne procedurer, mens REST eksponerer data som ressourcer, der tilgรฅs via HTTP-verber. RPC fรธles som at kalde en lokal funktion, mens REST fokuserer pรฅ ressourcer og tilstand.

gRPC er Google's moderne, hรธjtydende RPC-framework. Det bruger HTTP/2 og protokol Buffers, og understรธtter tovejsstreaming, hvilket gรธr den populรฆr til mikroservicekommunikation.

RPC kan vรฆre begge dele. Et synkront kald blokerer, indtil serveren returnerer et resultat, mens et asynkront kald returnerer med det samme og hรฅndterer svaret senere. Frameworks som gRPC understรธtter begge stilarter.

RPC er en form for IPC, der fungerer pรฅ tvรฆrs af separate maskiner. Mens mange IPC-metoder deler hukommelse pรฅ รฉn vรฆrt, udveksler RPC beskeder over et netvรฆrk, sรฅ processer pรฅ forskellige computere kan samarbejde.

Almindelige RPC-implementeringer inkluderer gRPC, Apache Thrift, XML-RPC, JSON-RPC og Java RMI. De adskiller sig i dataformat og transport, men alle lader en klient kalde en procedure pรฅ en fjernserver.

RPC er ikke sikker som standard; sikkerheden afhรฆnger af transporten. Implementeringer tilfรธjer TLS-kryptering, godkendelsestokens og adgangskontroller for at beskytte opkald.

Maskinlรฆringsplatforme bruger RPC, isรฆr gRPC, til at levere modelforudsigelser mellem mikrotjenester. En klient sender funktioner og modtager et inferensresultat, keeping AI-systemer er hurtige og lรธst koblede.

Ja. GitHub Copilot kan scaffolde .proto-servicedefinitioner, klientstubs og serverhandlere til gRPC. Udviklere bรธr stadig gennemgรฅ genererede grรฆnseflader, fejlhรฅndtering og versionsstyring, fรธr de implementeres i produktion.

Opsummer dette indlรฆg med: