Remote Procedure Call (RPC) protokoll hajutatud süsteemis

⚡ Nutikas kokkuvõte

Kaugprotseduurikutse (RPC) on protsessidevaheline sideprotokoll, mis võimaldab programmil käivitada protseduuri teises aadressiruumis või masinas, peites võrguandmed hajutatud klient-server süsteemides tavalise kohaliku funktsioonikutse taha.

  • 📞 Määratlus: RPC võimaldab kliendil käivitada protseduuri kaugserveris nii, nagu oleks tegemist kohaliku kõnega.
  • 🗂️ tüübid: Tagasihelistamise, leviedastuse ja partiirežiimi RPC erinevad päringute marsruutimise ja järjekorda seadmise poolest.
  • 🏗️ ArchiStruktuur: Igas kõnes teevad koostööd viis osa: klient, kliendi tüvi, RPC käituskeskkond, serveri tüvi ja server.
  • 🔄 Kuidas see käib: Lisab parameetrid sõnumisse ja tühistab kutsujale tagastatud tulemuse.
  • 🇧🇷 Kompromissid: RPC lihtsustab hajutatud koodi, kuid lisab võrgu üldkulud ja rikkepunktid võrreldes kohalike kõnedega.
  • 🤖 AI nurk: gRPC pakub masinõppemudeleid mikroteenuste vahel ja Copilot kiirendab RPC-tüvede kirjutamist.

Kaugprotseduurikutse (RPC) hajutatud süsteemis

Mis on RPC?

Remote Procedure Call (RPC) on protsessidevaheline suhtlus klient-serveri rakenduste jaoks kasutatav tehnika. RPC täielik vorm on kaugprotseduurikutse. RPC-mehhanisme kasutatakse siis, kui arvutiprogramm käivitab protseduuri või alamprogrammi teises aadressiruumis, kodeerituna tavalise protseduurikutse abil, ilma et programmeerija kodeeriks selgesõnaliselt kauginteraktsiooni üksikasju.

See protseduurikutse haldab ka madala taseme transpordiprotokolle, näiteks UDP ja TCP/IP, et edastada sõnumiandmeid programmide vahel.

RPC tüübid

RPC-d on kolme tüüpi:

  • Tagasihelistamise RPC
  • Saate RPC
  • Partiirežiimis RPC

Tagasihelistamise RPC

Seda tüüpi RPC võimaldab osalevate protsesside vahel peer-to-peer (P2P) paradigmat. See aitab protsessil toimida nii kliendi kui ka serverina.

Tagasihelistamise RPC funktsioonid:

  • Tegeleb kaugtöödeldud interaktiivsete rakenduste probleemidega.
  • Annab serverile kliendi käepideme.
  • Tagasihelistamine paneb kliendiprotsessi ootama.
  • Haldab tagasihelistamise ummikseisusid.
  • See hõlbustab osalevate protsesside vahelist võrdõiguslikkuse paradigmat.

Saate RPC

RPC leviedastus on kliendi päring, mis edastatakse võrgus ja mida töötlevad kõik serverid, millel on selle päringu töötlemiseks vajalik meetod.

Broadcast RPC funktsioonid:

  • Võimaldab määrata, et kliendi päringusõnum tuleb edastada.
  • Saate deklareerida edastuspordid.
  • See aitab vähendada füüsilise võrgu koormust.

Partiirežiimis RPC

Pakettrežiimis RPC aitab kliendi poolel edastuspuhvris eraldi RPC-päringuid järjekorda panna ja seejärel need võrgu kaudu ühe partiina serverile saata.

Pakkrežiimi RPC funktsioonid:

  • See minimeerib päringu saatmisega seotud üldkulu, kuna see saadab päringud võrgu kaudu serverile ühe partiina.
  • Seda tüüpi RPC-protokoll on efektiivne ainult rakenduste jaoks, mis vajavad madalamaid kõnekiirusi.
  • See vajab usaldusväärset edastusprotokolli.

RPC Architektuur

RPC arhitektuuril on peamiselt viis programmi komponenti:

  1. klient
  2. Klient Stub
  3. RPC käitusaeg
  4. Server Stub
  5. server

RPC Architektuur

RPC Architektuur

Kuidas RPC töötab?

RPC protsessi käigus toimuvad järgmised sammud:

Step 1) Klient, kliendi tüvi ja üks RPC käitusaja eksemplar käivitatakse kliendiarvutis.

Step 2) Klient käivitab kliendi tüveprotsessi, edastades parameetreid tavapärasel viisil. Kliendi tüvi salvestatakse kliendi enda aadressiruumi. Samuti palub see kohalikul RPC käituskeskkonnal saata päring serveri tüvele.

Step 3) Selles etapis pääseb kasutaja RPC-le ligi tavalise kohaliku protseduurikutse abil. RPC käituskeskkond haldab sõnumite edastamist kliendi ja serveri vahel võrgus. See täidab ka uuesti saatmise, kinnitamise, marsruutimise ja krüpteerimise ülesandeid.

Step 4) Pärast serveriprotseduuri lõpuleviimist naaseb täitmine serveri tüvesse, mis pakib (marshaldab) tagastusväärtused sõnumiks. Seejärel saadab serveri tüvi sõnumi tagasi transpordikihile.

Step 5) Selles etapis saadab transpordikiht tulemussõnumi tagasi kliendi transpordikihile, mis omakorda tagastab sõnumi kliendi tüvele.

Step 6) Selles etapis kliendi tüvi demaršaleerib (pakib lahti) saadud paketis olevad tagastusparameetrid ja täitmine naaseb helistajale.

RPC omadused

Siin on RPC põhiomadused:

  • Kutsutud protseduur asub teises protsessis, mis tõenäoliselt asub teises masinas.
  • Protsessid ei jaga aadressiruumi.
  • Parameetrid edastatakse ainult väärtuste järgi.
  • RPC käivitub serveriprotsessi keskkonnas.
  • See ei paku juurdepääsu kutsuva protseduuri keskkonnale.

RPC omadused

Siin on RPC olulised funktsioonid:

  • Lihtne kutse süntaks.
  • Pakub teadaolevat semantikat.
  • Pakub täpselt määratletud liidest.
  • See suudab suhelda protsesside vahel, mis asuvad samal või erinevatel masinatel.

RPC eelised

Siin on RPC plussid/eelised:

  • RPC aitab klientidel serveritega suhelda tavapäraste kõrgetasemeliste protseduurikõnede abil.
  • RPC on modelleeritud kohaliku protseduurikutse põhjal, kuid kutsutud protseduur käivitatakse suure tõenäosusega teises protsessis ja tavaliselt teises arvutis.
  • RPC toetab protsessidele ja niididele orienteeritud mudeleid.
  • RPC muudab sisemise sõnumiedastusmehhanismi kasutaja eest varjatuks.
  • See kohustab jõudlust parandama paljud protokollikihid.
  • RPC annab kõhulihastele lihaspingeidtracnäiteks jääb võrgukommunikatsiooni sõnumiedastusel põhinev olemus kasutaja eest varjatuks.
  • RPC-d saab kasutada nii hajutatud kui ka lokaalses keskkonnas.
  • Koodi ümberkirjutamiseks ja ümberarendamiseks on vaja minimaalselt vaeva näha.

RPC miinused

Siin on RPC kasutamise miinused/miinused:

  • Kaugprotseduurikutse edastab parameetreid ainult väärtuste kaupa; pointeri (viite) väärtused pole lubatud.
  • Kaugprotseduuri kõne (ja tagasipöördumise) aeg – üldkulud – on oluliselt pikemad kui kohaliku protseduuri puhul.
  • See mehhanism on rikete suhtes väga haavatav, kuna see hõlmab sidesüsteemi, teist masinat ja teist protsessi.
  • RPC kontseptsiooni saab rakendada erineval viisil, seega puudub ühtne standard.
  • See ei paku riistvaraarhitektuuri jaoks paindlikkust, kuna see on enamasti interaktsioonipõhine.
  • Protsessi maksumus suureneb kaugprotseduurikutse tõttu.

KKK

RPC esitab toimingud kaugprotseduuridena, samas kui REST esitab andmeid ressurssidena, millele pääseb ligi HTTP-verbide kaudu. RPC tundub nagu kohaliku funktsiooni kutsumine; REST keskendub ressurssidele ja olekule.

gRPC on Googlekaasaegne ja suure jõudlusega RPC raamistik. See kasutab HTTP/2 ja protokolli Buffers ja toetab kahesuunalist voogedastust, muutes selle populaarseks mikroteenuste suhtluses.

RPC võib olla mõlemat tüüpi. Sünkroonne kõne blokeeritakse seni, kuni server tagastab tulemuse, samas kui asünkroonne kõne naaseb kohe ja käsitleb vastust hiljem. Raamistikud nagu gRPC toetavad mõlemat stiili.

RPC on IPC vorm, mis töötab erinevate masinate vahel. Kuigi paljud IPC meetodid jagavad mälu ühel hostil, vahetab RPC sõnumeid võrgu kaudu, et eri arvutite protsessid saaksid koostööd teha.

Levinumad RPC implementatsioonid on gRPC, Apache Thrift, XML-RPC, JSON-RPC ja Java RMI. Need erinevad andmevormingu ja transpordi poolest, kuid kõik võimaldavad kliendil kutsuda protseduuri kaugserveris.

RPC pole vaikimisi turvaline; turvalisus sõltub transpordist. Rakendused lisavad kõnede kaitsmiseks TLS-krüptimise, autentimismärgid ja juurdepääsukontrollid.

Masinõppeplatvormid kasutavad RPC-d, eriti gRPC-d, mikroteenuste vaheliste mudeliennustuste tegemiseks. Klient saadab tunnuseid ja saab järeldustulemuse, keeping Tehisintellekti süsteemid on kiired ja lõdvalt ühendatud.

Jah. GitHub Copilot saab gRPC jaoks tugijala .proto teenuse definitsioone, kliendi tüvesid ja serveri käitlejaid luua. Arendajad peaksid enne tootmiskeskkonda juurutamist siiski üle vaatama loodud liidesed, veakäsitluse ja versioonimise.

Võta see postitus kokku järgmiselt: