Protokol poziva udaljene procedure (RPC) u distribuiranom sustavu

⚡ Pametni sažetak

Udaljeni poziv procedure (RPC) je protokol za međuprocesnu komunikaciju koji omogućuje programu izvršavanje procedure u drugom adresnom prostoru ili računalu, skrivajući detalje mreže iza običnog lokalnog poziva funkcije u distribuiranim klijent-poslužitelj sustavima.

  • 📞 Definicija: RPC omogućuje klijentu pozivanje procedure na udaljenom poslužitelju kao da se radi o lokalnom pozivu.
  • 🗂️ vrste: Povratni poziv, emitiranje i RPC u paketnom načinu rada razlikuju se po načinu usmjeravanja i stavljanja u red čekanja zahtjeva.
  • 🏗️ Architekstura: Pet dijelova surađuje u svakom pozivu: klijent, klijentski stub, RPC runtime, poslužiteljski stub i poslužitelj.
  • 🔄 Kako to radi: Stubs maršira parametre u poruku i demaršira rezultat vraćen pozivatelju.
  • ⚖️ Kompromisi: RPC pojednostavljuje distribuirani kod, ali dodaje mrežno opterećenje i točke kvara u odnosu na lokalne pozive.
  • 🤖 Kut umjetne inteligencije: gRPC poslužuje modele strojnog učenja između mikroservisa, a Copilot ubrzava pisanje RPC stubova.

Udaljeni poziv procedura (RPC) u distribuiranom sustavu

Što je RPC?

Daljinski postupak poziva (RPC) je međuprocesna komunikacija tehnika koja se koristi za klijent-poslužitelj aplikacije. Puni oblik RPC-a je Remote Procedure Call (Poziv udaljene procedure). RPC mehanizmi se koriste kada računalni program uzrokuje izvršavanje procedure ili potprograma u drugom adresnom prostoru, kodiranom kao normalan poziv procedure bez da programer izričito kodira detalje za udaljenu interakciju.

Ovaj poziv procedure također upravlja protokolima niske razine prijenosa, kao što su UDP i TCP/IP, za prijenos podataka poruke između programa.

Vrste RPC-a

Tri su tipa RPC-a:

  • RPC povratnog poziva
  • RPC emitiranja
  • RPC u skupnom načinu rada

RPC povratnog poziva

Ova vrsta RPC-a omogućuje peer-to-peer (P2P) paradigmu između procesa koji sudjeluju. Pomaže procesu da djeluje i kao klijent i kao poslužitelj.

Funkcije povratnog poziva RPC:

  • Rješava probleme interaktivnih aplikacija obrađenih na daljinu.
  • Pruža poslužitelju identifikator klijenta.
  • Povratni poziv tjera klijentski proces da čeka.
  • Upravlja zastojima povratnih poziva.
  • Omogućuje peer-to-peer paradigmu među sudjelujućim procesima.

RPC emitiranja

Broadcast RPC je klijentski zahtjev koji se emitira na mreži i obrađuje od strane svih poslužitelja koji imaju metodu za obradu tog zahtjeva.

Funkcije emitiranog RPC-a:

  • Omogućuje vam da odredite da se poruka zahtjeva klijenta mora emitirati.
  • Možete deklarirati portove emitiranja.
  • Pomaže u smanjenju opterećenja fizičke mreže.

RPC u skupnom načinu rada

RPC u paketnom načinu rada pomaže u stavljanju odvojenih RPC zahtjeva u red čekanja u međuspremniku za prijenos na strani klijenta, a zatim njihovom slanju preko mreže u jednom paketu na poslužitelj.

Funkcije RPC-a u paketnom načinu rada:

  • Minimizira opterećenje potrebno za slanje zahtjeva jer šalje zahtjeve preko mreže u jednoj seriji na poslužitelj.
  • Ova vrsta RPC protokola je učinkovita samo za aplikacije kojima su potrebne niže brzine poziva.
  • Potreban je pouzdan protokol prijenosa.

RPC Architektura

RPC arhitektura ima uglavnom pet komponenti programa:

  1. Klijent
  2. Stub klijenta
  3. RPC Runtime
  4. Server Stub
  5. Server

RPC Architektura

RPC Architektura

Kako radi RPC?

Tijekom RPC procesa odvijaju se sljedeći koraci:

Korak 1) Klijent, klijentski stub i jedna instanca RPC runtime okruženja izvršavaju se na klijentskom računalu.

Korak 2) Klijent pokreće proces klijentskog stuba prosljeđivanjem parametara na uobičajeni način. Klijentski stub pohranjuje se unutar vlastitog adresnog prostora klijenta. Također traži od lokalnog RPC Runtimea da pošalje zahtjev poslužiteljskom stubu.

Korak 3) U ovoj fazi korisnik pristupa RPC-u upućivanjem redovnog lokalnog poziva procedure. RPC Runtime upravlja prijenosom poruka između klijenta i poslužitelja preko mreže. Također obavlja posao ponovnog prijenosa, potvrde, usmjeravanja i šifriranja.

Korak 4) Nakon završetka serverske procedure, izvršenje se vraća na server stub, koji pakira (maršira) povratne vrijednosti u poruku. Server stub zatim šalje poruku natrag transportnom sloju.

Korak 5) U ovom koraku, transportni sloj šalje rezultatnu poruku natrag transportnom sloju klijenta, koji vraća poruku klijentskom stubu.

Korak 6) U ovoj fazi, klijentski stub demaršira (raspakira) povratne parametre u rezultirajućem paketu, a izvršenje se vraća pozivatelju.

Karakteristike RPC-a

Evo osnovnih karakteristika RPC-a:

  • Pozvana procedura se nalazi u drugom procesu, koji se vjerojatno nalazi na drugom računalu.
  • Procesi ne dijele adresni prostor.
  • Parametri se prosljeđuju samo vrijednostima.
  • RPC se izvršava unutar okruženja poslužiteljskog procesa.
  • Ne nudi pristup okruženju pozivajuće procedure.

Značajke RPC-a

Evo važnih značajki RPC-a:

  • Jednostavna sintaksa poziva.
  • Nudi poznatu semantiku.
  • Pruža dobro definirano sučelje.
  • Može komunicirati između procesa na istim ili različitim strojevima.

Prednosti RPC-a

Evo prednosti/koristi RPC-a:

  • RPC pomaže klijentima da komuniciraju s poslužiteljima putem konvencionalne upotrebe poziva procedura u programskim jezicima visoke razine.
  • RPC je modeliran prema lokalnom pozivu procedure, ali pozvana procedura se najvjerojatnije izvršava u drugom procesu i obično na drugom računalu.
  • RPC podržava modele orijentirane na procese i modele orijentirane na niti.
  • RPC skriva interni mehanizam prenošenja poruka od korisnika.
  • Obvezuje mnoge slojeve protokola radi poboljšanja performansi.
  • RPC pruža abstracna primjer, priroda mrežne komunikacije putem prenošenja poruka ostaje skrivena od korisnika.
  • RPC se može koristiti i u distribuiranim i u lokalnim okruženjima.
  • Napor potreban za ponovno pisanje i ponovni razvoj koda je minimalan.

Nedostaci RPC-a

Evo nedostataka/nedostataka korištenja RPC-a:

  • Udaljeni poziv procedure prosljeđuje parametre samo po vrijednostima; vrijednosti pokazivača (reference) nisu dopuštene.
  • Vrijeme poziva (i povratka) udaljene procedure - opće vrijeme - znatno je veće nego kod lokalne procedure.
  • Ovaj mehanizam je vrlo osjetljiv na kvarove jer uključuje komunikacijski sustav, drugi stroj i drugi proces.
  • RPC koncept se može implementirati na različite načine, tako da ne postoji jedinstveni standard.
  • Ne nudi fleksibilnost za hardversku arhitekturu, jer je uglavnom temeljena na interakciji.
  • Trošak procesa se povećava zbog poziva udaljene procedure.

Pitanja i odgovori

RPC izlaže radnje kao udaljene procedure, dok REST izlaže podatke kao resurse kojima se pristupa putem HTTP glagola. RPC se čini kao pozivanje lokalne funkcije; REST se usredotočuje na resurse i stanje.

gRPC je Googlemoderni, visokoučinkoviti RPC okvir. Koristi HTTP/2 i protokol Buffers i podržava dvosmjerno strujanje, što ga čini popularnim za komunikaciju mikroservisa.

RPC može biti oboje. Sinkroni poziv blokira dok poslužitelj ne vrati rezultat, dok asinkroni poziv odmah vraća rezultat i kasnije obrađuje odgovor. Okviri poput gRPC-a podržavaju oba stila.

RPC je oblik IPC-a koji radi na odvojenim računalima. Dok mnoge IPC metode dijele memoriju na jednom hostu, RPC razmjenjuje poruke putem mreže tako da procesi na različitim računalima mogu surađivati.

Uobičajene RPC implementacije uključuju gRPC, Apache Thrift, XML-RPC, JSON-RPC i Java RMI. Razlikuju se po formatu podataka i transportu, ali svi omogućuju klijentu pozivanje procedure na udaljenom poslužitelju.

RPC nije siguran prema zadanim postavkama; sigurnost ovisi o transportu. Implementacije dodaju TLS enkripciju, tokene za autentifikaciju i kontrole pristupa za zaštitu poziva.

Platforme za strojno učenje koriste RPC, posebno gRPC, za posluživanje predviđanja modela između mikroservisa. Klijent šalje značajke i prima rezultat zaključivanja, keeping AI sustavi brzo i labavo povezani.

Da. GitHub Copilot može izraditi .proto definicije usluga, klijentske stubove i poslužiteljske rukovatelje za gRPC. Razvojni programeri i dalje bi trebali pregledati generirana sučelja, rukovanje pogreškama i verzije prije implementacije u produkciju.

Sažmite ovu objavu uz: