Remote Procedure Call (RPC) protokoll az elosztott rendszerben

โšก Okos รถsszefoglalรณ

A tรกvoli eljรกrรกshรญvรกs (RPC) egy folyamatok kรถzรถtti kommunikรกciรณs protokoll, amely lehetล‘vรฉ teszi egy program szรกmรกra egy mรกsik cรญmtartomรกnyban vagy gรฉpen tรถrtรฉnล‘ eljรกrรกs vรฉgrehajtรกsรกt, a hรกlรณzati rรฉszleteket egy szokรกsos helyi fรผggvรฉnyhรญvรกs mรถgรฉ rejtve elosztott kliens-szerver rendszerekben.

  • ๐Ÿ“ž Meghatรกrozรกs: Az RPC lehetล‘vรฉ teszi a kliens szรกmรกra, hogy egy tรกvoli szerveren รบgy hรญvjon meg egy eljรกrรกst, mintha helyi hรญvรกs lenne.
  • ๐Ÿ—‚๏ธ Tรญpusok: A visszahรญvรกsi, a szรณrรกsi รฉs a kรถtegelt mรณdรบ RPC abban kรผlรถnbรถzik, hogyan irรกnyรญtjรกk รฉs รกllรญtjรกk sorba a kรฉrelmeket.
  • ๐Ÿ—๏ธ Architectรบra: ร–t rรฉsz mลฑkรถdik egyรผtt minden hรญvรกson: kliens, kliens csonk, RPC futรกsidejลฑ kรถrnyezet, szerver csonk รฉs szerver.
  • ๐Ÿ”„ Hogyan mลฑkรถdik: A paramรฉtereket egy รผzenetbe rendezi, majd a hรญvรณnak visszaadott eredmรฉnyt kibontja.
  • ๐Ÿ‡ง๐Ÿ‡ท Kompromisszumok: Az RPC leegyszerลฑsรญti az elosztott kรณdot, de hรกlรณzati terhelรฉst รฉs meghibรกsodรกsi pontokat ad a helyi hรญvรกsokhoz kรฉpest.
  • ๐Ÿค– AI szรถg: A gRPC gรฉpi tanulรกsi modelleket szolgรกl ki a mikroszolgรกltatรกsok kรถzรถtt, a Copilot pedig felgyorsรญtja az RPC-csonkok รญrรกsรกt.

Tรกvoli eljรกrรกshรญvรกs (RPC) elosztott rendszerben

Mi az az RPC?

Tรกvoli eljรกrรกshรญvรกs (RPC) egy folyamatok kรถzรถtti kommunikรกciรณ kliens-szerver alkalmazรกsokhoz hasznรกlt technika. Az RPC teljes formรกja a Remote Procedure Call (Tรกvoli eljรกrรกshรญvรกs). Az RPC mechanizmusokat akkor hasznรกljรกk, amikor egy szรกmรญtรณgรฉpes program egy eljรกrรกst vagy alprogramot egy mรกsik cรญmtartomรกnyban hajt vรฉgre, normรกl eljรกrรกshรญvรกskรฉnt kรณdolva anรฉlkรผl, hogy a programozรณ explicit mรณdon kรณdolnรก a tรกvoli interakciรณ rรฉszleteit.

Ez az eljรกrรกshรญvรกs alacsony szintลฑ รกtviteli protokollokat is kezel, mint pรฉldรกul az UDP รฉs a TCP/IP, az รผzenetadatok programok kรถzรถtti รกtvitelรฉhez.

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 fajta RPC peer-to-peer (P2P) paradigmรกt tesz lehetล‘vรฉ a rรฉszt vevล‘ folyamatok kรถzรถtt. Segรญti a folyamatot abban, hogy klienskรฉnt รฉs szerverkรฉnt is mลฑkรถdjรถn.

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

  • Tรกvolrรณl feldolgozott, interaktรญv alkalmazรกsproblรฉmรกkat kezel.
  • Megadja a szervernek a kliens azonosรญtรณjรกt.
  • A visszahรญvรกs vรกrakozรกsra kรฉnyszerรญti a kliens folyamatot.
  • Kezeli a visszahรญvรกsi holtpontokat.
  • Ez elล‘segรญti a peer-to-peer paradigma kialakulรกsรกt a rรฉszt vevล‘ folyamatok kรถzรถtt.

RPC adรกs

A szรณrt RPC egy klienskรฉrรฉs, amelyet a hรกlรณzaton szรณrnak, รฉs amelyet minden olyan szerver feldolgoz, amely rendelkezik a kรฉrรฉs feldolgozรกsรกhoz szรผksรฉges metรณdussal.

A Broadcast RPC funkciรณi:

  • Lehetล‘vรฉ teszi annak megadรกsรกt, hogy az รผgyfรฉl kรฉrรฉsรผzenetรฉt sugรกrozni kell.
  • 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 kรผlรถnรกllรณ RPC-kรฉrelmek sorba รกllรญtรกsรกban egy รกtviteli pufferben a kliens oldalon, majd egy kรถtegben elkรผldi azokat a hรกlรณzaton keresztรผl a szervernek.

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

  • Minimalizรกlja a kรฉrรฉskรผldรฉssel jรกrรณ tรถbbletterhelรฉst, mivel a kรฉrรฉseket egy kรถtegben kรผldi el a hรกlรณzaton keresztรผl a szervernek.
  • Ez a fajta RPC protokoll csak olyan alkalmazรกsoknรกl hatรฉkony, amelyek alacsonyabb hรญvรกsi sebessรฉget igรฉnyelnek.
  • 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 tรถrtรฉnnek:

Step 1) Az รผgyfรฉl, az รผgyfรฉl csonkja รฉs az RPC futรกsidejลฑ egy pรฉldรกnya a kliensgรฉpen fut.

Step 2) Az รผgyfรฉl a szokรกsos mรณdon paramรฉterek รกtadรกsรกval indรญtja el az รผgyfรฉlcsonk folyamatรกt. Az รผgyfรฉlcsonk az รผgyfรฉl sajรกt cรญmtartomรกnyรกban tรกrolรณdik. Emellett megkรฉri a helyi RPC futรกsidejลฑ kรถrnyezetet, hogy kรผldje el a kรฉrรฉst a kiszolgรกlรณcsonknak.

Step 3) Ebben a szakaszban a felhasznรกlรณ egy szokรกsos helyi eljรกrรกshรญvรกssal fรฉr hozzรก az RPC-hez. Az RPC futรกsidejลฑ kรถrnyezet kezeli az รผzenetek tovรกbbรญtรกsรกt a kliens รฉs a szerver kรถzรถtt a hรกlรณzaton keresztรผl. Emellett elvรฉgzi az รบjrakรผldรฉst, a nyugtรกzรกst, az รบtvรกlasztรกst รฉs a titkosรญtรกst is.

Step 4) A szerver eljรกrรกsรกnak befejezรฉse utรกn a vรฉgrehajtรกs visszatรฉr a szerver csonkjรกhoz, amely a visszatรฉrรฉsi รฉrtรฉkeket egy รผzenetbe csomagolja (rendezi). A szerver csonk ezutรกn visszakรผldi az รผzenetet 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 a kliens szรกllรญtรกsi rรฉtegรฉnek, amely visszakรผldi az รผzenetet a kliens csonknak.

Step 6) Ebben a szakaszban a kliens stub kicsomagolja a visszatรฉrรฉsi paramรฉtereket a kapott csomagbรณl, รฉs a vรฉgrehajtรกs visszatรฉr a hรญvรณhoz.

Az RPC jellemzล‘i

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

  • A meghรญvott eljรกrรกs egy mรกsik folyamatban van, amely valรณszรญnลฑleg egy mรกsik gรฉpen 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 biztosรญt 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รกsi szintaxis.
  • Ismert szemantikรกt kรญnรกl.
  • Jรณl definiรกlt felรผletet biztosรญt.
  • Kรฉpes kommunikรกlni az ugyanazon vagy kรผlรถnbรถzล‘ gรฉpeken futรณ folyamatok kรถzรถtt.

Az RPC elล‘nyei

รme az RPC elล‘nyei/kedvezล‘ tulajdonsรกgai:

  • Az RPC segรญti a klienseket a szerverekkel valรณ kommunikรกciรณban a magas szintลฑ nyelveken hasznรกlt eljรกrรกshรญvรกsok hagyomรกnyos hasznรกlatรกval.
  • Az RPC a helyi eljรกrรกshรญvรกs mintรกjรกra รฉpรผl, de a meghรญvott eljรกrรกs valรณszรญnลฑleg egy mรกsik folyamatban รฉs รกltalรกban egy mรกsik szรกmรญtรณgรฉpen fut.
  • Az RPC tรกmogatja a folyamatorientรกlt รฉs a szรกlorientรกlt modelleket.
  • Az RPC elrejti a belsล‘ รผzenetkรผldรฉsi mechanizmust a felhasznรกlรณ elล‘l.
  • Szรกmos protokollrรฉteget lekรถtelez a teljesรญtmรฉny javรญtรกsรกra.
  • Az RPC hasizmokat fejleszttracpรฉldรกul a hรกlรณzati kommunikรกciรณ รผzenetkรผldล‘ jellege rejtve marad a felhasznรกlรณ elล‘l.
  • Az RPC mind elosztott, mind helyi kรถrnyezetben hasznรกlhatรณ.
  • A kรณd รบjraรญrรกsรกhoz รฉs รบjrafejlesztรฉsรฉhez szรผksรฉges erล‘feszรญtรฉs minimรกlis.

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 csak รฉrtรฉkekkel adja รกt a paramรฉtereket; a mutatรณ (referencia) รฉrtรฉkek nem engedรฉlyezettek.
  • A tรกvoli eljรกrรกshรญvรกs (รฉs visszatรฉrรฉsi) ideje โ€“ vagyis a tรถbbletterhelรฉs โ€“ jelentล‘sen magasabb, mint egy helyi eljรกrรกsรฉ.
  • Ez a mechanizmus rendkรญvรผl ki van tรฉve a hibรกknak, mivel magรกban foglal egy kommunikรกciรณs rendszert, egy mรกsik gรฉpet รฉs egy mรกsik folyamatot.
  • Az RPC koncepciรณ tรถbbfรฉlekรฉppen is megvalรณsรญthatรณ, รญgy nincs egysรฉges szabvรกny.
  • Nem kรญnรกl rugalmassรกgot a hardverarchitektรบra tekintetรฉben, mivel tรถbbnyire interakciรณ-alapรบ.
  • A folyamat kรถltsรฉge a tรกvoli eljรกrรกshรญvรกs miatt nรถvekszik.

GYIK

Az RPC tรกvoli eljรกrรกsokkรฉnt teszi elรฉrhetล‘vรฉ a mลฑveleteket, mรญg a REST HTTP-mลฑveleteken keresztรผl elรฉrt erล‘forrรกsokkรฉnt teszi elรฉrhetล‘vรฉ az adatokat. Az RPC olyan, mintha egy helyi fรผggvรฉnyt hรญvnรกnk meg; a REST az erล‘forrรกsokra รฉs az รกllapotra รถsszpontosรญt.

gRPC Googlemodern, nagy teljesรญtmรฉnyลฑ RPC keretrendszere. HTTP/2-t รฉs protokollt hasznรกl. Buffers, รฉs tรกmogatja a kรฉtirรกnyรบ streamelรฉst, รญgy nรฉpszerลฑvรฉ vรกlik a mikroszolgรกltatรกsos kommunikรกciรณban.

Az RPC lehet mindkettล‘. Egy szinkron hรญvรกs blokkol, amรญg a szerver vissza nem ad egy eredmรฉnyt, mรญg egy aszinkron hรญvรกs azonnal visszatรฉr, รฉs kรฉsล‘bb kezeli a vรกlaszt. Az olyan keretrendszerek, mint a gRPC, mindkรฉt stรญlust tรกmogatjรกk.

Az RPC az IPC egy olyan formรกja, amely kรผlรถnรกllรณ gรฉpeken mลฑkรถdik. Mรญg sok IPC-metรณdus megosztja a memรณriรกt egy gรฉpen, az RPC รผzeneteket vรกlt hรกlรณzaton keresztรผl, รญgy a kรผlรถnbรถzล‘ szรกmรญtรณgรฉpeken lรฉvล‘ folyamatok egyรผttmลฑkรถdhetnek.

Az RPC gyakori implementรกciรณi kรถzรฉ tartozik a gRPC, az Apache Thrift, az XML-RPC, a JSON-RPC รฉs a Java RMI. Adatformรกtumukban รฉs szรกllรญtรกsukban kรผlรถnbรถznek, de mindegyik lehetล‘vรฉ teszi, hogy a kliens meghรญvjon egy eljรกrรกst egy tรกvoli szerveren.

Az RPC alapรฉrtelmezรฉs szerint nem biztonsรกgos; a biztonsรกg a szรกllรญtรกstรณl fรผgg. A megvalรณsรญtรกsok TLS titkosรญtรกst, hitelesรญtรฉsi tokeneket รฉs hozzรกfรฉrรฉs-vezรฉrlรฉst adnak hozzรก a hรญvรกsok vรฉdelme รฉrdekรฉben.

A gรฉpi tanulรกsi platformok RPC-t, kรผlรถnรถsen gRPC-t hasznรกlnak a mikroszolgรกltatรกsok kรถzรถtti modell-elล‘rejelzรฉsek kiszolgรกltatรกsรกra. Az รผgyfรฉl funkciรณkat kรผld, รฉs kรถvetkeztetรฉsi eredmรฉnyt kap, keeping A mestersรฉges intelligencia rendszerek gyorsak รฉs lazรกn รถsszekapcsoltak.

Igen. A GitHub Copilot kรฉpes .proto szolgรกltatรกsdefinรญciรณkat, klienscsonkokat รฉs szerverkezelล‘ket scaffolderelni a gRPC-hez. A fejlesztล‘knek tovรกbbra is รกt kell tekinteniรผk a lรฉtrehozott interfรฉszeket, a hibakezelรฉst รฉs a verziรณkรถvetรฉst, mielล‘tt รฉles kรถrnyezetben telepรญtenรฉk.

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