Uživatelské nástroje

Nástroje pro tento web


gprc

gRPC (Remote Procedure Call)

gRPC je moderní, vysoce výkonný open-source framework pro vzdálené volání procedur (RPC). Byl vyvinut společností Google a je navržen tak, aby umožňoval klientským a serverovým aplikacím komunikovat napříč různými programovacími jazyky (např. C#, Python, Java, Go).

V architektuře mikroslužeb se gRPC stalo standardem pro vysoce efektivní interní komunikaci.

Klíčové technologie

Vysoký výkon gRPC je dán kombinací dvou technologií:

  • HTTP/2: Na rozdíl od RESTu (který často používá HTTP/1.1) využívá gRPC binární protokol HTTP/2. Ten umožňuje multiplexování (více požadavků v jednom spojení) a obousměrné streamování.
  • Protocol Buffers (Protobuf): Místo čitelného textu (JSON) používá gRPC binární serializaci. Data jsou díky tomu až o 80 % menší a jejich zpracování je mnohem rychlejší.

Režimy komunikace

gRPC definuje čtyři typy metod (servisů):

Typ Popis
Unary Klasický model: Klient pošle jeden požadavek a čeká na jednu odpověď.
Server Streaming Klient pošle jeden požadavek a server mu posílá proud zpráv (např. živé výsledky).
Client Streaming Klient posílá proud zpráv a server odpoví jednou souhrnnou zprávou (např. upload souboru).
Bidirectional Streaming Obě strany posílají data nezávisle na sobě v reálném čase (např. chat nebo telemetrie).

Výhody a nevýhody

Výhody

  • Vysoký výkon: Ideální pro systémy s nízkou latencí.
  • Silné typování: Díky souborům `.proto` je kontrakt mezi serverem a klientem pevně daný.
  • Code Generation: Nástroje automaticky vygenerují kód pro klienta i server v mnoha jazycích.

Nevýhody

  • Omezená podpora prohlížečů: Prohlížeče zatím plně nepodporují HTTP/2 v míře potřebné pro gRPC (vyžaduje se gRPC-Web).
  • Nečitelnost pro lidi: Protože jsou zprávy binární, nelze je snadno kontrolovat v běžném textovém editoru.

Příklad definice (.proto)

Veškerá logika gRPC začíná definicí v IDL (Interface Definition Language):

syntax = "proto3";

// Definice služby
service Vypocet {
  rpc Secti (SestavaCisel) returns (Vysledek) {}
}

// Definice zpráv
message SestavaCisel {
  int32 a = 1;
  int32 b = 2;
}

message Vysledek {
  int32 soucet = 1;
}

Související pojmy: Mikroslužby, API, Google

gprc.txt · Poslední úprava: autor: admin