====== gRPC ====== **gRPC** (gRPC Remote Procedure Call) je moderní, vysoce výkonný open-source framework pro vzdálené volání procedur. Původně byl vyvinut společností [[https://it-slovnik.cz/pojem/google|Google]] a nyní spadá pod Cloud Native Computing Foundation (CNCF). Umožňuje klientským a serverovým aplikacím komunikovat spolu tak transparentně, jako by volání vzdálené metody bylo lokální funkcí. ===== Klíčové technologie ===== gRPC stojí na dvou pilířích, které mu zajišťují rychlost a efektivitu: * **HTTP/2:** Využívá nejnovější verzi protokolu HTTP, která umožňuje binární přenos, multiplexování (více požadavků po jednom spojení) a streamování dat. * **Protocol Buffers (Protobuf):** Místo textového formátu (JSON/XML) používá binární serializační formát. Data jsou díky tomu menší a jejich zpracování je mnohem rychlejší. ===== Typy komunikace ===== Na rozdíl od standardního RESTu, gRPC podporuje čtyři režimy přenosu: 1. Unary: Klasický model požadavek-odpověď. 2. Server streaming: Klient pošle jeden požadavek a server odpovídá proudem dat. 3. Client streaming: Klient posílá proud dat a server odpoví jednou zprávou. 4. Bidirectional streaming: Obě strany posílají proudy dat nezávisle na sobě (obousměrný duplex). ===== Srovnání: gRPC vs. REST ===== ^ Vlastnost ^ gRPC ^ REST ^ | **Formát dat** | Binární (Protobuf) | Textový (JSON, XML) | | **Protokol** | Striktně HTTP/2 | HTTP/1.1 nebo HTTP/2 | | **Typování** | Silné (definované v .proto souboru) | Slabé (volitelně JSON Schema) | | **Rychlost** | Velmi vysoká (nízká latence) | Nižší (režie textového formátu) | ===== Příklad definice služby (.proto) ===== Služby se v gRPC definují v souborech s příponou `.proto`: syntax = "proto3"; service Greeter { rpc SayHello (HelloRequest) returns (HelloReply) {} } message HelloRequest { string name = 1; } message HelloReply { string message = 1; } --- //Související pojmy: [[https://it-slovnik.cz/pojem/api|API]], [[https://it-slovnik.cz/pojem/google|Google]], [[https://it-slovnik.cz/pojem/http|HTTP]]//