Remote Procedure Call (RPC) -protokolla hajautetussa järjestelmässä

⚡ Älykäs yhteenveto

Etäproseduurikutsu (RPC) on prosessien välinen viestintäprotokolla, jonka avulla ohjelma voi suorittaa proseduurin toisessa osoiteavaruudessa tai koneessa ja piilottaa verkkotiedot tavallisen paikallisen funktiokutsun taakse hajautetuissa asiakas-palvelinjärjestelmissä.

  • 📞 Määritelmä: RPC antaa asiakkaan käynnistää proseduurin etäpalvelimella aivan kuin se olisi paikallinen kutsu.
  • 🗂️ tyypit: Takaisinsoitto, lähetys ja eräajotilan RPC eroavat toisistaan ​​pyyntöjen reitityksessä ja jonotuksessa.
  • 🏗️ Archirakenne: Jokaisessa kutsussa tekee yhteistyötä viisi osaa: asiakas, asiakkaan tynkä, RPC-ajonaikainen funktio, palvelimen tynkä ja palvelin.
  • 🔄 Näin se toimii: Tyngät yhdistävät parametrit viestiin ja purkavat kutsujalle palautetun tuloksen.
  • 🇧🇷 Kompromissit: RPC yksinkertaistaa hajautettua koodia, mutta lisää verkon ylimääräistä kuormitusta ja vikaantumispisteitä verrattuna paikallisiin puheluihin.
  • 🤖 Tekoälyn kulma: gRPC tarjoaa koneoppimismalleja mikropalveluiden välillä, ja Copilot nopeuttaa RPC-tynkien kirjoittamista.

Etäproseduurikutsu (RPC) hajautetussa järjestelmässä

Mikä on RPC?

Remote Procedure Call (RPC) On prosessien välinen viestintä Asiakas-palvelin-sovelluksissa käytetty tekniikka. RPC:n täydellinen muoto on etäproseduurikutsu (Remote Procedure Call). RPC-mekanismeja käytetään, kun tietokoneohjelma suorittaa proseduurin tai aliohjelman eri osoiteavaruudessa, koodattuna normaalina proseduurikutsuna ilman, että ohjelmoija koodaa erikseen etävuorovaikutuksen yksityiskohtia.

Tämä proseduurikutsu hallitsee myös matalan tason siirtoprotokollia, kuten UDP:tä ja TCP/IP:tä, viestidatan siirtämiseksi ohjelmien välillä.

RPC-tyypit

Kolme RPC-tyyppiä ovat:

  • Takaisinsoitto RPC
  • Lähetys RPC
  • Erätoiminen RPC

Takaisinsoitto RPC

Tämän tyyppinen RPC mahdollistaa vertaisverkon (P2P) paradigman osallistuvien prosessien välillä. Se auttaa prosessia toimimaan sekä asiakkaana että palvelimena.

Takaisinsoitto-RPC:n toiminnot:

  • Käsittelee etänä käsiteltyjä, interaktiivisia sovellusongelmia.
  • Antaa palvelimelle asiakkaan tunnuksen.
  • Takaisinkutsu laittaa asiakasprosessin odottamaan.
  • Hallitsee takaisinsoiton umpikujia.
  • Se helpottaa vertaisverkostoitumista osallistuvien prosessien välillä.

Lähetys RPC

Lähetetty RPC on asiakkaan pyyntö, joka lähetetään verkossa ja jota kaikki palvelimet, joilla on kyseisen pyynnön käsittelyyn tarvittava menetelmä, käsittelevät.

Broadcast RPC:n toiminnot:

  • Voit määrittää, että asiakkaan pyyntöviesti on lähetettävä.
  • Voit ilmoittaa lähetysportit.
  • Se auttaa vähentämään fyysisen verkon kuormitusta.

Erätoiminen RPC

Erätilassa tapahtuva RPC auttaa jonottamaan erilliset RPC-pyynnöt asiakaspuolen lähetyspuskuriin ja lähettämään ne sitten verkon kautta yhtenä eränä palvelimelle.

Erätilan RPC:n toiminnot:

  • Se minimoi pyynnön lähettämiseen liittyvän yleiskulun, koska se lähettää pyynnöt verkon kautta palvelimelle yhdessä erässä.
  • Tämän tyyppinen RPC-protokolla on tehokas vain sovelluksille, jotka tarvitsevat alhaisempia puhelunopeuksia.
  • Se tarvitsee luotettavan lähetysprotokollan.

RPC Archirakenne

RPC-arkkitehtuuri sisältää pääosin viisi ohjelman osaa:

  1. Asiakas
  2. Asiakas Stub
  3. RPC Runtime
  4. Palvelin Stub
  5. Server

RPC Archirakenne

RPC Archirakenne

Miten RPC toimii?

RPC-prosessin aikana tapahtuu seuraavat vaiheet:

Vaihe 1) Asiakas, asiakkaan tynkä ja yksi RPC-suorituksenaikaisen prosessin instanssi suoritetaan asiakaskoneella.

Vaihe 2) Asiakasohjelma käynnistää asiakasresurssipyynnön (client stub) välittämällä parametrit tavalliseen tapaan. Asiakasresurssipyyntö tallennetaan asiakkaan omaan osoiteavaruuteen. Se myös pyytää paikallista RPC-ajonaikaista prosessia lähettämään pyynnön palvelimen resurssipyynnölle.

Vaihe 3) Tässä vaiheessa käyttäjä käyttää RPC:tä tekemällä tavallisen paikallisen proseduurikutsun. RPC Runtime hallinnoi viestien siirtoa asiakkaan ja palvelimen välillä verkon kautta. Se suorittaa myös uudelleenlähetyksen, kuittauksen, reitityksen ja salauksen.

Vaihe 4) Palvelinproseduurin valmistuttua suoritus palaa palvelimen tynkään, joka pakkaa (järjestelee) paluuarvot viestiksi. Palvelintynkä lähettää sitten viestin takaisin siirtokerrokselle.

Vaihe 5) Tässä vaiheessa siirtokerros lähettää tulosviestin takaisin asiakaspuolen siirtokerrokselle, joka palauttaa viestin asiakaspuolen tynkälle.

Vaihe 6) Tässä vaiheessa asiakkaan tynkä purkaa paluuparametrit tuloksena olevasta paketista, ja suoritus palaa kutsujalle.

RPC:n ominaisuudet

Tässä ovat RPC:n keskeiset ominaisuudet:

  • Kutsuttu proseduuri on toisessa prosessissa, joka todennäköisesti sijaitsee toisella koneella.
  • Prosessit eivät jaa osoiteavaruutta.
  • Parametrit välitetään vain arvojen mukaan.
  • RPC suoritetaan palvelinprosessin ympäristössä.
  • Se ei tarjoa pääsyä kutsuvan proseduurin ympäristöön.

RPC:n ominaisuudet

Tässä ovat RPC:n tärkeät ominaisuudet:

  • Yksinkertainen kutsusyntaksi.
  • Tarjoaa tunnettua semantiikkaa.
  • Tarjoaa hyvin määritellyn käyttöliittymän.
  • Se voi kommunikoida prosessien välillä samalla tai eri koneilla.

RPC:n edut

Tässä ovat RPC:n edut/hyödyt:

  • RPC auttaa asiakkaita kommunikoimaan palvelimien kanssa tavanomaisten korkean tason ohjelmointikielten proseduurikutsujen avulla.
  • RPC mallinnetaan paikallisen proseduurikutsujen mukaan, mutta kutsuttu proseduuri suoritetaan todennäköisimmin eri prosessissa ja yleensä eri tietokoneella.
  • RPC tukee prosessikeskeisiä ja säikekeskeisiä malleja.
  • RPC piilottaa sisäisen viestinvälitysmekanismin käyttäjältä.
  • Se sitoo monia protokollakerroksia suorituskyvyn parantamiseen.
  • RPC tarjoaa vatsalihaksiatracesimerkiksi verkkoviestinnän viestinvälitysluonne pysyy käyttäjältä piilossa.
  • RPC:tä voidaan käyttää sekä hajautetuissa että paikallisissa ympäristöissä.
  • Koodin uudelleenkirjoittamiseen ja kehittämiseen tarvittava työmäärä on minimaalinen.

RPC:n haitat

Tässä ovat RPC:n käytön haitat/haitat:

  • Etäproseduurikutsu välittää parametrit vain arvojen perusteella; osoittimen (viittauksen) arvoja ei sallita.
  • Etäproseduurikutsun (ja paluun) aika – eli yleiskustannus – on huomattavasti suurempi kuin paikallisen proseduurin.
  • Tämä mekanismi on erittäin altis vikaantumiselle, koska siihen liittyy viestintäjärjestelmä, toinen kone ja toinen prosessi.
  • RPC-konsepti voidaan toteuttaa eri tavoin, joten yhtä ainoaa standardia ei ole.
  • Se ei tarjoa joustavuutta laitteistoarkkitehtuurille, koska se on enimmäkseen vuorovaikutuspohjainen.
  • Prosessin kustannukset nousevat etäproseduurikutsun vuoksi.

UKK

RPC esittää toiminnot etäproseduureina, kun taas REST esittää tiedot HTTP-verbien kautta käytettävinä resursseina. RPC tuntuu paikallisen funktion kutsumiselta; REST keskittyy resursseihin ja tilaan.

gRPC on Googlen moderni ja tehokas RPC-kehys. Se käyttää HTTP/2-protokollaa ja Buffers, ja tukee kaksisuuntaista suoratoistoa, mikä tekee siitä suositun mikropalveluviestinnässä.

RPC voi olla molempia tyylejä. Synkroninen kutsu estää toiminnan, kunnes palvelin palauttaa tuloksen, kun taas asynkroninen kutsu palaa välittömästi ja käsittelee vastauksen myöhemmin. Kehykset, kuten gRPC, tukevat molempia tyylejä.

RPC on IPC:n muoto, joka toimii eri koneissa. Vaikka monet IPC-menetelmät jakavat muistia yhdellä isännällä, RPC vaihtaa viestejä verkon kautta, jotta eri tietokoneiden prosessit voivat tehdä yhteistyötä.

Yleisiä RPC-toteutuksia ovat gRPC, Apache Thrift, XML-RPC, JSON-RPC ja Java RMI. Ne eroavat toisistaan ​​tietomuodon ja siirron suhteen, mutta kaikki antavat asiakkaan kutsua proseduuria etäpalvelimella.

RPC ei ole oletusarvoisesti suojattu; suojaus riippuu siirrosta. Toteutuksissa on lisätty TLS-salausta, todennustunnuksia ja käyttöoikeuksien hallintaa puheluiden suojaamiseksi.

Koneoppimisalustat käyttävät RPC:tä, erityisesti gRPC:tä, malliennusteiden tekemiseen mikropalveluiden välillä. Asiakas lähettää ominaisuuksia ja vastaanottaa päättelytuloksen, keepping Tekoälyjärjestelmät ovat nopeita ja löyhästi kytkettyjä.

Kyllä. GitHub Copilot voi tukea .proto-palvelumääritelmiä, asiakastyngiä ja palvelimen käsittelijöitä gRPC:lle. Kehittäjien tulisi silti tarkistaa luodut rajapinnat, virheenkäsittely ja versiointi ennen käyttöönottoa tuotantoympäristössä.

Tiivistä tämä viesti seuraavasti: