Remote Procedure Call (RPC)-protocol in gedistribueerd systeem

โšก Slimme samenvatting

Remote Procedure Call (RPC) is een interprocescommunicatieprotocol waarmee een programma een procedure in een andere adresruimte of machine kan uitvoeren, waarbij netwerkdetails verborgen blijven achter een gewone lokale functieaanroep in gedistribueerde client-serversystemen.

  • ๐Ÿ“ž Definitie: Met RPC kan een client een procedure op een externe server aanroepen alsof het een lokale aanroep betreft.
  • ๐Ÿ—‚๏ธ types: Callback-, broadcast- en batch-mode RPC verschillen in de manier waarop verzoeken worden gerouteerd en in de wachtrij geplaatst.
  • ???? ๏ธ Archistructuur: Bij elke aanroep werken vijf onderdelen samen: client, client-stub, RPC-runtime, server-stub en server.
  • ๐Ÿ”„ Hoe werkt het: Stubs zetten parameters om in een bericht en deserialiseren het resultaat dat naar de aanroeper wordt teruggestuurd.
  • โ€‹ Zwakke punten: RPC vereenvoudigt gedistribueerde code, maar voegt netwerkoverhead en faalpunten toe in vergelijking met lokale aanroepen.
  • ๐Ÿค– AI-hoek: gRPC zorgt voor de uitwisseling van machine learning-modellen tussen microservices, en Copilot versnelt het schrijven van RPC-stubs.

Remote Procedure Call (RPC) in een gedistribueerd systeem

Wat is RPC?

Remote Procedure Call (RPC) is een interproces communicatie Een techniek die wordt gebruikt voor client-servertoepassingen. RPC staat voor Remote Procedure Call. RPC-mechanismen worden gebruikt wanneer een computerprogramma een procedure of subroutine uitvoert in een andere adresruimte, gecodeerd als een normale procedureaanroep zonder dat de programmeur expliciet de details voor de interactie op afstand codeert.

Deze procedureaanroep beheert ook transportprotocollen op laag niveau, zoals UDP en TCP/IP, om de berichtgegevens tussen programma's te verzenden.

Soorten RPC

Drie soorten RPC zijn:

  • Terugbel-RPC
  • RPC uitzenden
  • RPC in batchmodus

Terugbel-RPC

Dit type RPC maakt een peer-to-peer (P2P) paradigma mogelijk tussen deelnemende processen. Het stelt een proces in staat om zowel als client als server te fungeren.

Functies van terugbel-RPC:

  • Behandelt problemen met interactieve applicaties die op afstand worden verwerkt.
  • Geeft de server de handle van de client.
  • De callback-functie zorgt ervoor dat het clientproces wacht.
  • Beheert deadlocks bij callbacks.
  • Het bevordert een peer-to-peer-paradigma tussen deelnemende processen.

RPC uitzenden

Broadcast RPC is een verzoek van een client dat via het netwerk wordt uitgezonden en verwerkt door alle servers die de methode hebben om dat verzoek te verwerken.

Functies van Broadcast RPC:

  • Hiermee kunt u specificeren dat het verzoekbericht van de client moet worden uitgezonden.
  • U kunt uitzendpoorten declareren.
  • Het helpt de belasting van het fysieke netwerk te verminderen.

RPC in batchmodus

Batch-mode RPC maakt het mogelijk om afzonderlijke RPC-verzoeken in een verzendbuffer aan de clientzijde in een wachtrij te plaatsen en deze vervolgens in รฉรฉn batch via het netwerk naar de server te verzenden.

Functies van RPC in batchmodus:

  • Het minimaliseert de overhead die gepaard gaat met het verzenden van een verzoek, omdat het de verzoeken in รฉรฉn keer via het netwerk naar de server stuurt.
  • Dit type RPC-protocol is alleen efficiรซnt voor toepassingen die een lagere aanroepfrequentie vereisen.
  • Er is een betrouwbaar transmissieprotocol nodig.

RPC Architectuur

RPC-architectuur bestaat hoofdzakelijk uit vijf programmacomponenten:

  1. Bedrijf
  2. Klant stomp
  3. RPC-runtime
  4. Serverstub
  5. Server

RPC Architectuur

RPC Architectuur

Hoe werkt RPC?

De volgende stappen vinden plaats tijdens het RPC-proces:

Stap 1) De client, de client-stub en รฉรฉn instantie van de RPC-runtime worden uitgevoerd op de clientmachine.

Stap 2) De client start een client-stubproces door op de gebruikelijke manier parameters door te geven. De client-stub wordt opgeslagen in de eigen adresruimte van de client. De client vraagt โ€‹โ€‹ook de lokale RPC-runtime om het verzoek naar de server-stub te sturen.

Stap 3) In deze fase benadert de gebruiker RPC door een reguliere lokale procedureaanroep te doen. De RPC Runtime beheert de overdracht van berichten tussen de client en de server via het netwerk. Het voert ook de taken uit van herverzending, bevestiging, routering en versleuteling.

Stap 4) Na voltooiing van de serverprocedure keert de uitvoering terug naar de serverstub, die de retourwaarden in een bericht verpakt (marshalling). De serverstub stuurt het bericht vervolgens terug naar de transportlaag.

Stap 5) In deze stap stuurt de transportlaag het resultaatbericht terug naar de clienttransportlaag, die het bericht vervolgens terugstuurt naar de clientstub.

Stap 6) In deze fase deserialiseert (ontpakt) de client-stub de retourparameters in het resulterende pakket, waarna de uitvoering terugkeert naar de aanroeper.

Kenmerken van RPC

Dit zijn de essentiรซle kenmerken van RPC:

  • De aangeroepen procedure maakt deel uit van een ander proces, dat zich waarschijnlijk op een andere machine bevindt.
  • De processen delen geen adresruimte.
  • Parameters worden alleen door waarden doorgegeven.
  • RPC wordt uitgevoerd binnen de omgeving van het serverproces.
  • Het biedt geen toegang tot de omgeving van de aanroepprocedure.

Kenmerken van RPC

Dit zijn de belangrijke kenmerken van RPC:

  • Eenvoudige oproepsyntaxis.
  • Biedt bekende semantiek.
  • Biedt een goed gedefinieerde interface.
  • Het kan communiceren tussen processen op dezelfde of verschillende machines.

Voordelen van RPC

Hieronder volgen de voordelen van RPC:

  • RPC helpt clients te communiceren met servers door middel van de gebruikelijke procedureaanroepen in programmeertalen op hoog niveau.
  • RPC is gebaseerd op de lokale procedureaanroep, maar de aangeroepen procedure wordt hoogstwaarschijnlijk in een ander proces en meestal op een andere computer uitgevoerd.
  • RPC ondersteunt zowel procesgerichte als threadgerichte modellen.
  • RPC verbergt het interne mechanisme voor berichtuitwisseling voor de gebruiker.
  • Het zet veel van de protocollagen in om de prestaties te verbeteren.
  • RPC biedt abstracbijvoorbeeld, het feit dat netwerkcommunicatie berichten uitwisselt, blijft verborgen voor de gebruiker.
  • RPC kan zowel in gedistribueerde als lokale omgevingen worden gebruikt.
  • De inspanning die nodig is om de code te herschrijven en opnieuw te ontwikkelen, is minimaal.

Nadelen van RPC

Hier zijn de nadelen/nadelen van het gebruik van RPC:

  • Een Remote Procedure Call geeft parameters alleen door middel van waarden door; pointerwaarden (referentiewaarden) zijn niet toegestaan.
  • De tijd die nodig is voor een externe procedureaanroep (en de retourtijd) โ€“ de overhead โ€“ is aanzienlijk hoger dan voor een lokale procedure.
  • Dit mechanisme is zeer gevoelig voor storingen, omdat het een communicatiesysteem, een andere machine en een ander proces omvat.
  • Het RPC-concept kan op verschillende manieren worden geรฏmplementeerd, waardoor er geen eenduidige standaard bestaat.
  • Het biedt geen flexibiliteit voor de hardwarearchitectuur, omdat het grotendeels op interactie is gebaseerd.
  • De kosten van het proces stijgen door de procedureaanroep op afstand.

Veelgestelde vragen

RPC presenteert acties als externe procedures, terwijl REST gegevens presenteert als resources die toegankelijk zijn via HTTP-werkwoorden. RPC voelt aan als het aanroepen van een lokale functie; REST is gericht op resources en status.

gRPC is GoogleHet moderne, krachtige RPC-framework maakt gebruik van HTTP/2 en het Protocol. Bufferen ondersteunt bidirectionele streaming, waardoor het populair is voor communicatie tussen microservices.

RPC kan beide vormen aannemen. Een synchrone aanroep blokkeert totdat de server een resultaat terugstuurt, terwijl een asynchrone aanroep direct terugkeert en de reactie later verwerkt. Frameworks zoals gRPC ondersteunen beide stijlen.

RPC is een vorm van IPC die werkt tussen verschillende machines. Waar veel IPC-methoden het geheugen op รฉรฉn host delen, wisselt RPC berichten uit via een netwerk, waardoor processen op verschillende computers kunnen samenwerken.

Veelgebruikte RPC-implementaties zijn onder andere gRPC, Apache Thrift, XML-RPC, JSON-RPC en Java RMI. Ze verschillen in dataformaat en transport, maar ze stellen een client allemaal in staat een procedure op een externe server aan te roepen.

RPC is standaard niet veilig; de beveiliging hangt af van het transportprotocol. Implementaties voegen TLS-encryptie, authenticatietokens en toegangscontroles toe om de aanroepen te beschermen.

Machine learning-platforms gebruiken RPC, met name gRPC, om modelvoorspellingen tussen microservices uit te wisselen. Een client stuurt kenmerken en ontvangt een inferentieresultaat.ping AI-systemen zijn snel en losjes gekoppeld.

Ja. GitHub Copilot kan .proto-servicedefinities, clientstubs en serverhandlers genereren voor gRPC. Ontwikkelaars moeten de gegenereerde interfaces, foutafhandeling en versiebeheer echter nog steeds controleren voordat ze de applicatie in productie nemen.

Vat dit bericht samen met: