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: