gprc
Obsah
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
