Remote Procedure Call (RPC) protokoll az elosztott rendszerben

Mi az az RPC?

Tรกvoli eljรกrรกshรญvรกs (RPC) egy folyamatkรถzi kommunikรกciรณs technika. Az RPC teljes formรกja a Remote Procedure Call. Kliens-szerver alkalmazรกsokhoz hasznรกljรกk. Az RPC-mechanizmusok akkor hasznรกlatosak, amikor egy szรกmรญtรณgรฉpes program egy eljรกrรกst vagy szubrutint egy mรกsik cรญmtรฉrben hajt vรฉgre, ami normรกl eljรกrรกshรญvรกskรฉnt van kรณdolva anรฉlkรผl, hogy a programozรณ kifejezetten kรณdolnรก a tรกvoli interakciรณ rรฉszleteit.

Ez az eljรกrรกshรญvรกs az alacsony szintลฑ szรกllรญtรกsi protokollokat is kezeli, mint pรฉldรกul a User Datagram Protocol, Transmission Control Protocol/Internet Protocol stb. Az รผzenetadatok programok kรถzรถtti รกtvitelรฉre szolgรกl.

Az RPC tรญpusai

Az RPC hรกrom tรญpusa:

  • Visszahรญvรกs RPC
  • RPC adรกs
  • Batch-mรณdรบ RPC

Visszahรญvรกs RPC

Ez a tรญpusรบ RPC P2P paradigmรกt tesz lehetล‘vรฉ a rรฉsztvevล‘ folyamatok kรถzรถtt. Segรญt egy folyamatnak, hogy egyszerre legyen kliens รฉs szerver szolgรกltatรกs.

A visszahรญvรกsi RPC funkciรณi:

  • Tรกvolrรณl feldolgozott interaktรญv alkalmazรกsi problรฉmรกk
  • Szervert kรญnรกl klienskezelล‘vel
  • A visszahรญvรกs vรกrakoztatja az รผgyfรฉlfolyamatot
  • A visszahรญvรกsi holtpontok kezelรฉse
  • Megkรถnnyรญti a peer-to-peer paradigmรกt a rรฉsztvevล‘ folyamatok kรถzรถtt.

RPC adรกs

A Broadcast RPC egy kliens kรฉrรฉse, amelyet a hรกlรณzaton sugรกroznak, รฉs minden olyan szerver feldolgozza, amely rendelkezik a kรฉrรฉs feldolgozรกsรกnak mรณdszerรฉvel.

A Broadcast RPC funkciรณi:

  • Lehetล‘vรฉ teszi annak megadรกsรกt, hogy az รผgyfรฉl kรฉrรฉsi รผzenetรฉt el kell kรผldeni.
  • Deklarรกlhat szรณrรกsi portokat.
  • Segรญt csรถkkenteni a fizikai hรกlรณzat terhelรฉsรฉt

Batch-mรณdรบ RPC

A kรถtegelt mรณdรบ RPC segรญt sorba rendezni, elkรผlรถnรญteni az RPC kรฉrรฉseket egy รกtviteli pufferben, a kliens oldalon, majd elkรผldi azokat a hรกlรณzaton egy kรถtegben a szervernek.

A kรถtegelt รผzemmรณdรบ RPC funkciรณi:

  • Minimรกlisra csรถkkenti a kรฉrรฉsek elkรผldรฉsรฉvel jรกrรณ tรถbbletkรถltsรฉget, mivel azokat a hรกlรณzaton keresztรผl egy kรถtegben kรผldi el a szervernek.
  • Ez a fajta RPC protokoll csak azoknรกl az alkalmazรกsoknรกl hatรฉkony, amelyeknek alacsonyabb hรญvรกsi sebessรฉgre van szรผksรฉgรผk.
  • Megbรญzhatรณ รกtviteli protokollt igรฉnyel.

RPC Architectรบra

Az RPC architektรบra a program รถt รถsszetevล‘jรฉbล‘l รกll:

  1. Vรกsรกrlรณ
  2. Client Stub
  3. RPC futรกsi idล‘
  4. Szerver csonk
  5. szerverรผnkhรถz!
RPC Architectรบra
RPC Architectรบra

Hogyan mลฑkรถdik az RPC?

Az RPC folyamat sorรกn a kรถvetkezล‘ lรฉpรฉsek zajlanak:

Step 1) A kliens, az รผgyfรฉlcsonk รฉs az RPC futรกsidejลฑ egy pรฉldรกnya az รผgyfรฉlgรฉpen fut le.

Step 2) Az รผgyfรฉl a szokรกsos mรณdon paramรฉterek รกtadรกsรกval elindรญt egy kliens csonkfolyamatot. Az รผgyfรฉl csonkja az รผgyfรฉl sajรกt cรญmterรฉben tรกrolรณdik. Arra is kรฉri a helyi RPC Runtime-ot, hogy kรผldjรถn vissza a kiszolgรกlรณ csonkjรกnak.

Step 3) Ebben a szakaszban az RPC-t a felhasznรกlรณ normรกl helyi eljรกrรกsi Cal. Az RPC Runtime kezeli az รผzenetek tovรกbbรญtรกsรกt a hรกlรณzat kรถzรถtt a kliens รฉs a szerver kรถzรถtt. Elvรฉgzi az รบjrakรผldรฉst, a nyugtรกzรกst, az รบtvรกlasztรกst รฉs a titkosรญtรกst is.

Step 4) A kiszolgรกlรณi eljรกrรกs befejezรฉse utรกn visszatรฉr a kiszolgรกlรณ csonkjรกhoz, amely a visszatรฉrรฉsi รฉrtรฉkeket egy รผzenetbe csomagolja (marshall). A kiszolgรกlรณ csonkja ezutรกn รผzenetet kรผld vissza a szรกllรญtรกsi rรฉtegnek.

Step 5) Ebben a lรฉpรฉsben a szรกllรญtรกsi rรฉteg visszakรผldi az eredmรฉnyรผzenetet az รผgyfรฉl szรกllรญtรกsi rรฉtegรฉnek, amely visszakรผldi az รผzenetet az รผgyfรฉl csonkjรกnak.

Step 6) Ebben a szakaszban az รผgyfรฉl csonkja demarshall (kicsomagolja) a visszatรฉrรฉsi paramรฉtereket az eredmรฉnyรผl kapott csomagban, รฉs a vรฉgrehajtรกsi folyamat visszatรฉr a hรญvรณhoz.

Az RPC jellemzล‘i

รme az RPC alapvetล‘ jellemzล‘i:

  • A hรญvott eljรกrรกs egy mรกsik folyamatban van, amely valรณszรญnลฑleg egy mรกsik gรฉpben talรกlhatรณ.
  • A folyamatok nem osztanak meg cรญmteret.
  • A paramรฉtereket csak รฉrtรฉkek adjรกk รกt.
  • Az RPC a szerverfolyamat kรถrnyezetรฉben fut.
  • Nem kรญnรกl hozzรกfรฉrรฉst a hรญvรณ eljรกrรกs kรถrnyezetรฉhez.

Az RPC jellemzล‘i

รme az RPC fontos tulajdonsรกgai:

  • Egyszerลฑ hรญvรกs szintaxis
  • Ismert szemantikรกt kรญnรกl
  • Biztosรญtson egy jรณl definiรกlt felรผletet
  • Kรฉpes kommunikรกlni az azonos vagy kรผlรถnbรถzล‘ gรฉpeken lรฉvล‘ folyamatok kรถzรถtt

Az RPC elล‘nyei

รme az RPC elล‘nyei/elล‘nyei:

  • Az RPC mรณdszer segรญti az รผgyfeleket a szerverekkel valรณ kommunikรกciรณban a hagyomรกnyos eljรกrรกshรญvรกsok magas szintลฑ nyelveken tรถrtรฉnล‘ hasznรกlatรกval.
  • Az RPC metรณdus a helyi eljรกrรกshรญvรกs mintรกjรกra kรฉszรผlt, de a hรญvott eljรกrรกs nagy valรณszรญnลฑsรฉggel egy mรกsik folyamatban รฉs รกltalรกban egy mรกsik szรกmรญtรณgรฉpen kerรผl vรฉgrehajtรกsra.
  • Az RPC tรกmogatja a folyamat- รฉs szรกl-orientรกlt modelleket.
  • Az RPC rejtettvรฉ teszi a belsล‘ รผzenettovรกbbรญtรกsi mechanizmust a felhasznรกlรณ elล‘l.
  • A kรณd รบjraรญrรกsรกhoz รฉs รบjrafejlesztรฉsรฉhez szรผksรฉges erล‘feszรญtรฉs minimรกlis.
  • A tรกvoli eljรกrรกshรญvรกsok felhasznรกlhatรณk elosztott รฉs helyi kรถrnyezet cรฉljรกra.
  • Szรกmos protokollrรฉteget lekรถtelez a teljesรญtmรฉny javรญtรกsรกra.
  • Az RPC absztrakciรณt biztosรญt. Pรฉldรกul a hรกlรณzati kommunikรกciรณ รผzenettovรกbbรญtรกsi jellege rejtve marad a felhasznรกlรณ elล‘tt.
  • Az RPC lehetล‘vรฉ teszi az alkalmazรกsok hasznรกlatรกt olyan elosztott kรถrnyezetben, amely nem csak a helyi kรถrnyezetben van.
  • Az RPC kรณddal az รบjraรญrรกsi รฉs รบjrafejlesztรฉsi erล‘feszรญtรฉs minimรกlisra csรถkken.
  • Folyamatorientรกlt รฉs szรกl-orientรกlt modellek tรกmogatรกsa az RPC รกltal.

Az RPC hรกtrรกnyai

รme az RPC hasznรกlatรกnak hรกtrรกnyai/hรกtrรกnyai:

  • A tรกvoli eljรกrรกshรญvรกs a paramรฉtereket csak รฉrtรฉkek รฉs mutatรณรฉrtรฉkek alapjรกn adja รกt, ami nem megengedett.
  • A tรกvoli eljรกrรกshรญvรกsi (รฉs visszatรฉrรฉsi) idล‘ (azaz az รกltalรกnos kรถltsรฉgek) lรฉnyegesen alacsonyabb lehet, mint egy helyi eljรกrรกsรฉ.
  • Ez a mechanizmus nagyon รฉrzรฉkeny a meghibรกsodรกsokra, mivel egy kommunikรกciรณs rendszert, egy mรกsik gรฉpet รฉs egy mรกsik folyamatot foglal magรกban.
  • Az RPC koncepciรณ tรถbbfรฉlekรฉppen is megvalรณsรญthatรณ, ami nem szabvรกnyos.
  • Nem kรญnรกl semmilyen rugalmassรกgot az RPC-ben a hardver architektรบrรกhoz, mivel tรถbbnyire interakciรณ alapรบ.
  • A folyamat kรถltsรฉge megnล‘ a tรกvoli eljรกrรกshรญvรกs miatt.

ร–sszegzรฉskรฉnt

  • A tรกvoli eljรกrรกshรญvรกs egy folyamatok kรถzรถtti kommunikรกciรณ technika.
  • Az RPC hรกrom tรญpusa: 1) visszahรญvรกsos RPC 2) Broadcast RPC รฉs 3) kรถtegelt mรณdรบ RPC.
  • Az RPC architektรบra a program รถt รถsszetevล‘jรฉbล‘l รกll: 1) Client 2) Client Stub 3) RPC Runtime 4) Server Stub รฉs 5) Server
  • Az RPC mรณdszerben a folyamatok nem osztanak meg cรญmteret
  • Az RPC egyszerลฑ hรญvรกsszintaxist รฉs ismert szemantikรกt kรญnรกl
  • Az RPC mรณdszer segรญti az รผgyfeleket a szerverekkel valรณ kommunikรกciรณban a hagyomรกnyos eljรกrรกshรญvรกsok magas szintลฑ nyelveken tรถrtรฉnล‘ hasznรกlatรกval.
  • Az RPC mรณdszer legnagyobb hรกtrรกnya, hogy nagyon รฉrzรฉkeny a meghibรกsodรกsokra, mivel kommunikรกciรณs rendszert, egy mรกsik gรฉpet รฉs egy mรกsik folyamatot foglal magรกban.

Foglald รถssze ezt a bejegyzรฉst a kรถvetkezล‘kรฉppen: