Remote Procedure Call (RPC) Protocol i distribuerat system

โšก Smart sammanfattning

Remote Procedure Call (RPC) รคr ett kommunikationsprotokoll mellan processer som lรฅter ett program utfรถra en procedur i ett annat adressutrymme eller pรฅ en annan maskin, och dรถljer nรคtverksdetaljer bakom ett vanligt lokalt funktionsanrop i distribuerade klient-server-system.

  • ๐Ÿ“ž Definition: RPC lรฅter en klient anropa en procedur pรฅ en fjรคrrserver som om det vore ett lokalt anrop.
  • ๐Ÿ—‚๏ธ typer: ร…teranrops-, broadcast- och batch-lรคge RPC skiljer sig รฅt i hur fรถrfrรฅgningar dirigeras och kรถas.
  • ๐Ÿ—๏ธ Architecture: Fem delar samarbetar i varje anrop: klient, klientstub, RPC-kรถrning, serverstub och server.
  • ๐Ÿ”„ Sรฅ fungerar det: Sรคtter marshalparametrar i ett meddelande och avmarshalar resultatet som returneras till anroparen.
  • โš–๏ธ Avvรคgningar: RPC fรถrenklar distribuerad kod men lรคgger till nรคtverksoverhead och felpunkter jรคmfรถrt med lokala anrop.
  • ๐Ÿค– AI-vinkel: gRPC hanterar maskininlรคrningsmodeller mellan mikrotjรคnster, och Copilot snabbar upp skrivandet av RPC-stubbar.

Fjรคrranropsprocedurer (RPC) i distribuerat system

Vad รคr RPC?

Remote Procedure Call (RPC) รคr en interprocesskommunikation teknik som anvรคnds fรถr klient-server-applikationer. Den fullstรคndiga formen av RPC รคr Remote Procedure Call. RPC-mekanismer anvรคnds nรคr ett datorprogram fรฅr en procedur eller subrutin att kรถras i ett annat adressutrymme, kodat som ett normalt proceduranrop utan att programmeraren uttryckligen kodar detaljerna fรถr fjรคrrinteraktionen.

Detta proceduranrop hanterar รคven lรฅgnivรฅtransportprotokoll, sรฅsom UDP och TCP/IP, fรถr att transportera meddelandedata mellan program.

Typer av RPC

Tre typer av RPC รคr:

  • Callback RPC
  • Sรคnd RPC
  • RPC i batchlรคge

Callback RPC

Denna typ av RPC mรถjliggรถr ett peer-to-peer (P2P) paradigm mellan deltagande processer. Det hjรคlper en process att fungera som bรฅde en klient och en server.

Funktioner fรถr Callback RPC:

  • Hanterar fjรคrrbearbetade, interaktiva applikationsproblem.
  • Fรถrser servern med klientens referens.
  • ร…teranrop gรถr att klientprocessen vรคntar.
  • Hanterar รฅteruppringningslรฅs.
  • Det underlรคttar ett peer-to-peer-paradigm mellan deltagande processer.

Sรคnd RPC

En broadcast-RPC รคr en klientfรถrfrรฅgan som sรคnds ut pรฅ nรคtverket och bearbetas av alla servrar som har metoden fรถr att bearbeta den fรถrfrรฅgan.

Funktioner fรถr Broadcast RPC:

  • Lรฅter dig ange att klientens fรถrfrรฅgningsmeddelande mรฅste sรคndas.
  • Du kan deklarera sรคndningsportar.
  • Det hjรคlper till att minska belastningen pรฅ det fysiska nรคtverket.

RPC i batchlรคge

Batch-lรคge RPC hjรคlper till att kรถa separata RPC-fรถrfrรฅgningar i en รถverfรถringsbuffert pรฅ klientsidan och sedan skicka dem รถver ett nรคtverk i en batch till servern.

Funktioner fรถr batchlรคge RPC:

  • Det minimerar kostnaden fรถr att skicka en fรถrfrรฅgan, eftersom fรถrfrรฅgningar skickas รถver nรคtverket i en batch till servern.
  • Den hรคr typen av RPC-protokoll รคr endast effektivt fรถr applikationer som behรถver lรคgre samtalshastigheter.
  • Den behรถver ett pรฅlitligt รถverfรถringsprotokoll.

RPC Architecture

RPC-arkitekturen har huvudsakligen fem komponenter i programmet:

  1. Klient
  2. Klientstubb
  3. RPC kรถrtid
  4. Server Stub
  5. server

RPC Architecture

RPC Architecture

Hur RPC fungerar?

Fรถljande steg sker under RPC-processen:

Steg 1) Klienten, klient-stubben och en instans av RPC-kรถrningen kรถrs pรฅ klientdatorn.

Steg 2) Klienten startar en klient-stub-process genom att skicka parametrar pรฅ vanligt sรคtt. Klient-stubben lagras i klientens eget adressutrymme. Den ber ocksรฅ den lokala RPC-kรถrtiden att skicka begรคran till server-stubben.

Steg 3) I det hรคr steget fรฅr anvรคndaren รฅtkomst till RPC genom att gรถra ett vanligt lokalt proceduranrop. RPC Runtime hanterar รถverfรถringen av meddelanden mellan klienten och servern รถver nรคtverket. Den utfรถr ocksรฅ jobbet med รฅtersรคndning, bekrรคftelse, routing och kryptering.

Steg 4) Efter att serverproceduren har slutfรถrts รฅtergรฅr exekveringen till serverstubben, som packar (marshalar) returvรคrdena i ett meddelande. Serverstubben skickar sedan meddelandet tillbaka till transportlagret.

Steg 5) I det hรคr steget skickar transportlagret resultatmeddelandet tillbaka till klientens transportlagre, som returnerar meddelandet till klientstubben.

Steg 6) I det hรคr steget demarshalar klienten (packar upp) returparametrarna i det resulterande paketet, och exekveringen รฅtergรฅr till anroparen.

Egenskaper fรถr RPC

Hรคr รคr de vรคsentliga egenskaperna hos RPC:

  • Den anropade proceduren finns i en annan process, som sannolikt finns pรฅ en annan maskin.
  • Processerna delar inte adressutrymme.
  • Parametrar skickas endast av vรคrden.
  • RPC kรถrs inom serverprocessens miljรถ.
  • Den erbjuder inte รฅtkomst till den anropande procedurens miljรถ.

Funktioner i RPC

Hรคr รคr de viktiga funktionerna i RPC:

  • Enkel anropssyntax.
  • Erbjuder kรคnd semantik.
  • Ger ett vรคldefinierat grรคnssnitt.
  • Den kan kommunicera mellan processer pรฅ samma eller olika maskiner.

Fรถrdelar med RPC

Hรคr รคr fรถrdelarna/nyttorna med RPC:

  • RPC hjรคlper klienter att kommunicera med servrar genom konventionell anvรคndning av proceduranrop i hรถgnivรฅsprรฅk.
  • RPC รคr modellerad efter det lokala proceduranropet, men den anropade proceduren kรถrs troligtvis i en annan process och vanligtvis pรฅ en annan dator.
  • RPC stรถder processorienterade och trรฅdorienterade modeller.
  • RPC gรถr den interna meddelandeรถverfรถringsmekanismen dold fรถr anvรคndaren.
  • Den binder mรฅnga av protokolllagren fรถr att fรถrbรคttra prestandan.
  • RPC tillhandahรฅller magmusklertraction; till exempel fรถrblir nรคtverkskommunikationens meddelandeรถverfรถringsfรถrmรฅga dold fรถr anvรคndaren.
  • RPC kan anvรคndas i bรฅde distribuerade och lokala miljรถer.
  • Anstrรคngningen som krรคvs fรถr att skriva om och utveckla koden pรฅ nytt รคr minimal.

Nackdelar med RPC

Hรคr รคr nackdelarna/nackdelarna med att anvรคnda RPC:

  • Remote Procedure Call skickar endast parametrar med vรคrden; pekarvรคrden (referensvรคrden) รคr inte tillรฅtna.
  • Tiden fรถr fjรคrranrop (och retur) av procedurer โ€“ omkostnaderna โ€“ รคr betydligt hรถgre รคn fรถr en lokal procedur.
  • Denna mekanism รคr mycket sรฅrbar fรถr fel, eftersom den involverar ett kommunikationssystem, en annan maskin och en annan process.
  • RPC-konceptet kan implementeras pรฅ olika sรคtt, sรฅ det finns ingen enda standard.
  • Den erbjuder inte flexibilitet fรถr hรฅrdvaruarkitektur, eftersom den mestadels รคr interaktionsbaserad.
  • Kostnaden fรถr processen รถkar pรฅ grund av fjรคrrproceduranropet.

Vanliga frรฅgor

RPC exponerar รฅtgรคrder som fjรคrrprocedurer, medan REST exponerar data som resurser som nรฅs via HTTP-verb. RPC kรคnns som att anropa en lokal funktion, medan REST fokuserar pรฅ resurser och tillstรฅnd.

gRPC รคr Googlemoderna, hรถgpresterande RPC-ramverk. Det anvรคnder HTTP/2 och protokoll Buffers, och stรถder dubbelriktad strรถmning, vilket gรถr den populรคr fรถr mikrotjรคnstkommunikation.

RPC kan vara bรฅda. Ett synkront anrop blockerar tills servern returnerar ett resultat, medan ett asynkront anrop returnerar omedelbart och hanterar svaret senare. Ramverk som gRPC stรถder bรฅda stilarna.

RPC รคr en form av IPC som fungerar รถver separata maskiner. Medan mรฅnga IPC-metoder delar minne pรฅ en vรคrd, utbyter RPC meddelanden รถver ett nรคtverk sรฅ att processer pรฅ olika datorer kan samarbeta.

Vanliga RPC-implementeringar inkluderar gRPC, Apache Thrift, XML-RPC, JSON-RPC och Java RMI. De skiljer sig รฅt i dataformat och transport men alla lรฅter en klient anropa en procedur pรฅ en fjรคrrserver.

RPC รคr inte sรคkert som standard; sรคkerheten beror pรฅ transporten. Implementeringar lรคgger till TLS-kryptering, autentiseringstokens och รฅtkomstkontroller fรถr att skydda samtal.

Maskininlรคrningsplattformar anvรคnder RPC, sรคrskilt gRPC, fรถr att leverera modellfรถrutsรคgelser mellan mikrotjรคnster. En klient skickar funktioner och tar emot ett inferensresultat, keeping AI-system snabba och lรถst kopplade.

Ja. GitHub Copilot kan scaffolda .proto-tjรคnstdefinitioner, klientstubbar och serverhanterare fรถr gRPC. Utvecklare bรถr fortfarande granska genererade grรคnssnitt, felhantering och versionshantering innan de driftsรคtts till produktion.

Sammanfatta detta inlรคgg med: