Protokol vzdáleného volání procedur (RPC) v distribuovaném systému

⚡ Chytré shrnutí

Vzdálené volání procedur (RPC) je protokol meziprocesové komunikace, který umožňuje programu spustit proceduru v jiném adresním prostoru nebo počítači a skrýt tak síťové detaily za běžným lokálním voláním funkce v distribuovaných systémech klient-server.

  • 📞 Definice: RPC umožňuje klientovi vyvolat proceduru na vzdáleném serveru, jako by se jednalo o lokální volání.
  • 🗂️ druhy: Zpětné volání, všesměrové vysílání a dávkové RPC se liší ve způsobu směrování a zařazování požadavků do fronty.
  • 🏗️ Archistruktura: Na každém volání spolupracuje pět částí: klient, klientský stub, běhové prostředí RPC, serverový stub a server.
  • 🔄 Jak to funguje: Zařadí parametry do zprávy a zruší zařazení výsledku vráceného volajícímu.
  • 🇧🇷 Kompromisy: RPC zjednodušuje distribuovaný kód, ale oproti lokálním voláním přidává síťovou režii a body selhání.
  • 🤖 Úhel umělé inteligence: gRPC obsluhuje modely strojového učení mezi mikroslužbami a Copilot zrychluje psaní RPC stubů.

Vzdálené volání procedur (RPC) v distribuovaném systému

Co je RPC?

Vzdálené volání procedur (RPC) je meziprocesová komunikace technika používaná pro aplikace klient-server. Úplná forma RPC je Vzdálené volání procedur (Remote Procedure Call). Mechanismy RPC se používají, když počítačový program způsobí spuštění procedury nebo podprogramu v jiném adresním prostoru, kódovaném jako normální volání procedury, aniž by programátor explicitně kódoval podrobnosti pro vzdálenou interakci.

Toto volání procedury také spravuje nízkoúrovňové transportní protokoly, jako jsou UDP a TCP/IP, pro přenos dat zpráv mezi programy.

Typy RPC

Tři typy RPC jsou:

  • Zpětné volání RPC
  • Vysílání RPC
  • RPC v dávkovém režimu

Zpětné volání RPC

Tento typ RPC umožňuje paradigma peer-to-peer (P2P) mezi zúčastněnými procesy. Pomáhá procesu fungovat jako klient i server.

Funkce Callback RPC:

  • Řeší problémy s interaktivními aplikacemi na dálku.
  • Poskytuje serveru handle klienta.
  • Zpětné volání nechá klientský proces čekat.
  • Spravuje zablokování zpětných volání.
  • Usnadňuje paradigma peer-to-peer mezi zúčastněnými procesy.

Vysílání RPC

Vysílání RPC je požadavek klienta, který je vysílán v síti a zpracováván všemi servery, které mají metodu pro zpracování tohoto požadavku.

Funkce Broadcast RPC:

  • Umožňuje určit, že zpráva s požadavkem klienta musí být vysílána.
  • Můžete deklarovat porty vysílání.
  • Pomáhá to snížit zátěž fyzické sítě.

RPC v dávkovém režimu

Dávkové RPC pomáhá zařazovat jednotlivé RPC požadavky do fronty v přenosové vyrovnávací paměti na straně klienta a poté je v jedné dávce odesílat přes síť na server.

Funkce dávkového RPC:

  • Minimalizuje režijní náklady spojené s odesíláním požadavků, protože odesílá požadavky přes síť v jedné dávce na server.
  • Tento typ RPC protokolu je efektivní pouze pro aplikace, které vyžadují nižší rychlost volání.
  • Vyžaduje spolehlivý přenosový protokol.

RPC Architecture

Architektura RPC má hlavně pět součástí programu:

  1. Klient
  2. Klientský útržek
  3. RPC Runtime
  4. Útržek serveru
  5. Server

RPC Architecture

RPC Architecture

Jak RPC funguje?

Během procesu RPC probíhají následující kroky:

Krok 1) Na klientském počítači se spustí klient, klientský stub a jedna instance běhového prostředí RPC.

Krok 2) Klient spustí proces klientského stubu předáním parametrů obvyklým způsobem. Klientský stub je uložen ve vlastním adresním prostoru klienta. Zároveň požádá lokální RPC Runtime o odeslání požadavku na serverový stub.

Krok 3) V této fázi uživatel přistupuje k RPC provedením běžného lokálního volání procedury. Runtime RPC spravuje přenos zpráv mezi klientem a serverem v síti. Provádí také úkoly opakovaného přenosu, potvrzování, směrování a šifrování.

Krok 4) Po dokončení serverové procedury se provádění vrací do serverového stubu, který návratové hodnoty zabalí (zařadí) do zprávy. Serverový stub poté odešle zprávu zpět do transportní vrstvy.

Krok 5) V tomto kroku transportní vrstva odešle výslednou zprávu zpět transportní vrstvě klienta, která ji vrátí do klientského stubu.

Krok 6) V této fázi klientský stub demarshaluje (rozbalí) návratové parametry ve výsledném paketu a provedení se vrátí volajícímu.

Charakteristika RPC

Zde jsou základní vlastnosti RPC:

  • Volaná procedura se nachází v jiném procesu, který se pravděpodobně nachází na jiném počítači.
  • Procesy nesdílejí adresní prostor.
  • Parametry jsou předávány pouze hodnotami.
  • RPC se spouští v prostředí procesu serveru.
  • Nenabízí přístup k prostředí volající procedury.

Vlastnosti RPC

Zde jsou důležité funkce RPC:

  • Jednoduchá syntaxe volání.
  • Nabízí známou sémantiku.
  • Poskytuje dobře definované rozhraní.
  • Může komunikovat mezi procesy na stejných nebo různých počítačích.

Výhody RPC

Zde jsou výhody/výhody RPC:

  • RPC pomáhá klientům komunikovat se servery prostřednictvím konvenčního používání volání procedur ve vyšších programovacích jazycích.
  • RPC je modelováno podle volání lokální procedury, ale volaná procedura je s největší pravděpodobností prováděna v jiném procesu a obvykle na jiném počítači.
  • RPC podporuje procesně orientované a vláknově orientované modely.
  • RPC skryje interní mechanismus předávání zpráv před uživatelem.
  • Zavazuje mnoho vrstev protokolu ke zlepšení výkonu.
  • RPC poskytuje abstracnapříklad povaha síťové komunikace spočívající v předávání zpráv zůstává před uživatelem skryta.
  • RPC lze použít v distribuovaném i lokálním prostředí.
  • Úsilí potřebné k přepsání a opětovnému vývoji kódu je minimální.

Nevýhody RPC

Zde jsou nevýhody/nevýhody používání RPC:

  • Vzdálené volání procedur předává parametry pouze jako hodnoty; hodnoty ukazatelů (referenční hodnoty) nejsou povoleny.
  • Doba volání (a návratu) vzdálené procedury – režie – je výrazně vyšší než u lokální procedury.
  • Tento mechanismus je vysoce náchylný k selhání, protože zahrnuje komunikační systém, jiný stroj a další proces.
  • Koncept RPC lze implementovat různými způsoby, takže neexistuje jediný standard.
  • Nenabízí flexibilitu hardwarové architektury, protože je založena převážně na interakci.
  • Náklady na proces se zvyšují kvůli vzdálenému volání procedur.

Nejčastější dotazy

RPC zpřístupňuje akce jako vzdálené procedury, zatímco REST zpřístupňuje data jako zdroje, ke kterým se přistupuje přes HTTP příkazy. RPC se jeví jako volání lokální funkce; REST se zaměřuje na zdroje a stav.

gRPC je GoogleModerní, vysoce výkonný RPC framework. Používá HTTP/2 a protokol Buffera podporuje obousměrné streamování, což ho činí oblíbeným pro komunikaci mikroslužeb.

RPC může být obojí. Synchronní volání se blokuje, dokud server nevrátí výsledek, zatímco asynchronní volání se vrátí okamžitě a zpracuje odpověď později. Frameworky jako gRPC podporují oba styly.

RPC je forma IPC, která funguje napříč oddělenými počítači. Zatímco mnoho metod IPC sdílí paměť na jednom hostiteli, RPC si vyměňuje zprávy přes síť, takže procesy na různých počítačích mohou spolupracovat.

Mezi běžné implementace RPC patří gRPC, Apache Thrift, XML-RPC, JSON-RPC a Java RMI. Liší se formátem dat a způsobem přenosu, ale všechny umožňují klientovi volat proceduru na vzdáleném serveru.

RPC není ve výchozím nastavení zabezpečené; zabezpečení závisí na transportu. Implementace přidávají šifrování TLS, ověřovací tokeny a řízení přístupu pro ochranu volání.

Platformy strojového učení používají RPC, zejména gRPC, k poskytování predikcí modelů mezi mikroslužbami. Klient odesílá funkce a přijímá výsledek inference, keeping Systémy umělé inteligence rychle a volně propojené.

Ano. GitHub Copilot dokáže pro gRPC vytvářet scaffoldingové definice služeb .proto, klientské stuby a obslužné rutiny serveru. Vývojáři by si i tak měli před nasazením do produkčního prostředí zkontrolovat vygenerovaná rozhraní, ošetření chyb a verzování.

Shrňte tento příspěvek takto: