Miroslav Holec
Premium

Komunikace v gRPC

Miroslav Holec   17. ledna 2022

Efektivní komunikace v gRPC službách je zajištěna spojením výhod HTTP/2 protokolu a Protobuf serializaci. HTTP/2 protokol přinesl mnoho vylepšení, na kterých jsou gRPC služby postaveny. Základním pilířem je tzv. streamování z klienta na server, ze serveru na klienta nebo v obou směrech. Rychlost zvyšuje i výkonná binární serializace do formátu Protocol Buffers, který je též úsporný při přenosu po síti.

Protokol HTTP/2

Přenosový protokol HTTP/2 umí efektivně využít TCP připojení pro komunikaci mezi klientem a serverem. Je postaven na binárním framingu, který komunikační zprávy rozděluje do tzv. headers a data framů. Jejich posílání je mnohem efektivnější, než složitý komunikační rámec v HTTP/1.1.

image-20220118085929098

Menší nevýhodou gRPC služeb je používání dodatečného header framu (trailing header) na konci komunikace. Tento frame na sebe váže status gRPC komunikace a běžné prohlížeče s ním neumí pracovat. I proto jsou nejčastěji gRPC služby používané pro komunikaci typu API 2 API. V případě prostředí webu je možné používat různé proxy, které tento problém obchází.

image-20220118090011657

Streaming

Kromě unární komunikace typu request - response lze používat tzv. streaming. V případě client streamingu může klient otevřít spojení se serverem a kontinuálně na něj zasílat zprávy. Server na konci komunikace odešle odpověď. Směr komunikace lze i otočit, takže klient pošle na server požadavek a ten následně směrem na klienta odesílá po určitou dobu zprávy (tzv. server streaming). V neposlední řadě lze otevřené připojení použít k plně duplexní komunikaci, kdy si zprávy posílají server a klient vzájemně.

image-20220118091149910


Využití gRPC služeb

Ideální volba gRPC padá na synchronní komunikaci mezi dvěma mikroslužbami nebo službami obecně. Vysoká rychlost a spolehlivost se hodí přesně tam, kde by klasické HTTP (REST) API nedělaly dobrou službu. Výhodou je též jazyková nezávislost a tudíž se gRPC hodí ve firemním prostředí, kde spolu potřebují komunikovat služby napsané v různých frameworcích. V kombinaci s proxy se gRPC služby také osvědčují v Blazor aplikacích, kde nabízí lepší výkonnost oproti REST přístupu.

Porovnání s REST