Procedureoproep op afstand (RPC) is een krachtige techniek om te construeren gedistribueerde, client-server-gebaseerde applicaties . Het is gebaseerd op het uitbreiden van de conventionele lokale procedureaanroepen, zodat de De aangeroepen procedure hoeft niet in dezelfde adresruimte te bestaan als de aanroepende procedure . De twee processen kunnen zich op hetzelfde systeem bevinden, of ze kunnen zich op verschillende systemen bevinden met een netwerk dat ze verbindt.
Wanneer u een procedureoproep op afstand maakt:

1. De aanroepende omgeving wordt opgeschort, procedureparameters worden via het netwerk overgedragen naar de omgeving waar de procedure moet worden uitgevoerd, en de procedure wordt daar uitgevoerd.
verschil tussen vos en wolf
2. Wanneer de procedure is voltooid en resultaten oplevert, worden de resultaten teruggestuurd naar de aanroepende omgeving, waar de uitvoering wordt hervat alsof deze terugkeert van een normale procedureaanroep.
OPMERKING: RPC is vooral geschikt voor client-server (bijvoorbeeld vraag-antwoord) interactie waarin de stroom van controle wisselt tussen de beller en de gebelde . Conceptueel gezien worden de client en de server niet tegelijkertijd uitgevoerd. In plaats daarvan springt de uitvoeringsdraad van de beller naar de opgeroepene en vervolgens weer terug.
Werking van RPC

Tijdens een RPC vinden de volgende stappen plaats:
- Een cliënt beroept zich op een client stub-procedure , waarbij parameters op de gebruikelijke manier worden doorgegeven. De klantenstub bevindt zich in de eigen adresruimte van de klant.
- De klantenstomp marshalls (pakket) de parameters in een bericht. Marshalling omvat het converteren van de representatie van de parameters naar een standaardformaat, en het kopiëren van elke parameter naar het bericht.
- De client-stub geeft het bericht door aan de transportlaag, die het naar de externe servermachine stuurt.
- Op de server geeft de transportlaag het bericht door aan een serverstub, die het bericht doorstuurt demarshalls(uitpakken) de parameters en roept de gewenste serverroutine aan met behulp van het reguliere procedureaanroepmechanisme.
- Wanneer de serverprocedure is voltooid, keert deze terug naar de serverstub (bijvoorbeeld via een normale procedure-aanroepretour) , waarmee de geretourneerde waarden in een bericht worden samengevoegd. De serverstub geeft het bericht vervolgens door aan de transportlaag.
- De transportlaag stuurt het resultaatbericht terug naar de clienttransportlaag, die het bericht terugstuurt naar de clientstub.
- De client-stub demarshalleert de retourparameters en de uitvoering keert terug naar de beller.
Belangrijke overwegingen bij het ontwerpen en implementeren van RPC-systemen zijn:
- Beveiliging: Omdat RPC communicatie via het netwerk omvat, is beveiliging een groot probleem. Maatregelen zoals authenticatie, encryptie en autorisatie moeten worden geïmplementeerd om ongeautoriseerde toegang te voorkomen en gevoelige gegevens te beschermen. Schaalbaarheid: Naarmate het aantal clients en servers toeneemt, mogen de prestaties van het RPC-systeem niet afnemen. Taakverdelingstechnieken en efficiënt gebruik van hulpbronnen zijn belangrijk voor schaalbaarheid. Fouttolerantie: het RPC-systeem moet bestand zijn tegen netwerkstoringen, servercrashes en andere onverwachte gebeurtenissen. Maatregelen zoals redundantie, failover en sierlijke degradatie kunnen bijdragen aan het garanderen van fouttolerantie. Standaardisatie: Er zijn verschillende RPC-frameworks en protocollen beschikbaar, en het is belangrijk om een gestandaardiseerde en breed geaccepteerde te kiezen om interoperabiliteit en compatibiliteit tussen verschillende platforms en programmeertalen te garanderen. Prestatieafstemming: Het is belangrijk om het RPC-systeem nauwkeurig af te stemmen voor optimale prestaties. Dit kan het optimaliseren van het netwerkprotocol inhouden, het minimaliseren van de gegevens die via het netwerk worden overgedragen, en het verminderen van de latentie en overhead die gepaard gaan met RPC-oproepen.
RPC-PROBLEMEN :
Kwesties die moeten worden aangepakt:
lezen uit csv-bestand in Java
1. RPC-runtime:
Het RPC-runtimesysteem is een bibliotheek met routines en een reeks services die de netwerkcommunicatie afhandelen die ten grondslag ligt aan het RPC-mechanisme. Tijdens een RPC-oproep worden de runtime-systemen aan de client- en serverzijde verwerkt binden, communicatie tot stand brengen via een geschikt protocol, oproepgegevens doorgeven tussen de client en server, en communicatiefouten afhandelen.
2. Stomp:
De functie van de stomp is om transparantie bieden over de door de programmeur geschreven applicatiecode .
- Aan de clientzijde verzorgt de stub de interface tussen de lokale procedureaanroep van de client en het runtimesysteem, waarbij gegevens worden verzameld en gedecentraliseerd, het RPC-runtimeprotocol wordt aangeroepen en, indien gevraagd, enkele van de bindende stappen worden uitgevoerd. Aan de serverzijde biedt de stub een vergelijkbare interface tussen het runtimesysteem en de lokale managerprocedures die door de server worden uitgevoerd.
3. Bindend: Hoe weet de klant wie hij moet bellen en waar de dienst zich bevindt?
De meest flexibele oplossing is om dynamische binding te gebruiken en de server tijdens runtime te vinden wanneer de RPC voor het eerst wordt gemaakt. De eerste keer dat de client-stub wordt aangeroepen, neemt deze contact op met een naamserver om het transportadres te bepalen waarop de server zich bevindt.
Binding bestaat uit twee delen:
log4j
- Wij:
- Lokaliseren:
- Een server die een dienst aanbiedt, exporteert er een interface voor. Als u een interface exporteert, wordt deze bij het systeem geregistreerd, zodat klanten deze kunnen gebruiken. Een Klant moet een (geëxporteerde) interface importeren voordat de communicatie kan beginnen.
4. De oproepsemantiek geassocieerd met RPC:
Het is voornamelijk ingedeeld in de volgende keuzes:
- Bericht over verzoek tot opnieuw proberen –
Of er opnieuw moet worden geprobeerd een verzoekbericht te verzenden wanneer een server is uitgevallen of de ontvanger het bericht niet heeft ontvangen. Dubbele filtering –
Verwijder de dubbele serververzoeken. Doorgifte van resultaten –
Om verloren berichten opnieuw te verzenden zonder de bewerkingen aan de serverzijde opnieuw uit te voeren.
VOORDELEN:
- RPC biedt ABSTRACTIE dat wil zeggen dat de boodschapdoorgifte van netwerkcommunicatie voor de gebruiker verborgen is.
- RPC laat vaak veel van de protocollagen weg om de prestaties te verbeteren. Zelfs een kleine prestatieverbetering is belangrijk omdat een programma vaak RPC's kan aanroepen.
- RPC maakt het gebruik van de applicaties in de gedistribueerde omgeving mogelijk, niet alleen in de lokale omgeving.
- Met RPC-code wordt het herschrijven/herontwikkelen van de code geminimaliseerd.
- Procesgerichte en threadgeoriënteerde modellen ondersteund door RPC.
Referenties:
- https://web.cs.wpi.edu/~cs4514/b98/week8-rpc/week8-rpc.html
- https://users.cs.cf.ac.uk/Dave.Marshall/C/node33.html
- Computernetwerken: een top-downbenadering door FOROUZAN