Full name: remote procedure call
- posílají se různé zprávy, které reprezentují volání metod na serveru
- Java ho nativně podporuje
- původní účel je pro INTERNÍ komunikaci (mezi jednotlivými microservices a službami)
- externí napojení je složité a nevyužívá se
gRPC protokol
- gRPC - rozšíření RPC do binární verze, která je vhodná pro Microservices
- když chci, aby microservices mezi sebou efektivně komunikovaly (i když jsou obě v jiných jazycích)
- interní service-to-service calls
- používá se i pro data streaming (IoT, monitoring)
- https://grpc.io/
- vyvinuto firmou Google, je open-source
- příliš se nehodí pro veřejná API či pro klasické webové aplikace (jelikož ho prohlížeče nativně nepodporují)
- když chci, aby microservices mezi sebou efektivně komunikovaly (i když jsou obě v jiných jazycích)
- funguje na 2 protokolu a využívá jeho výhod
- server push (pro streaming)
- multiplexing
- binární frames
- header compression
- Protocol Buffers = mechanismus pro serializování strukturovaných dat (nezávisí na jazyku a na platformě)
- vytváří se
.protosoubor, který definuje strukturu dat - podle tohoto souboru se pak vygenerují a zkompilují třídy (pomocí
protoc, které pak zajišťují samotné serializování, sdílení a deserializování dat (do binárního formátu) - formát posílaných zpráv je “binary protocol buffer”
- je kompaktní, rychlá (de)serializace, silné typování
- vytváří se
Service types for gRPC
- Unary RPC - client sends 1 request and gets 1 response
- the traditional function call
- Server streaming RPC
- 1 request from client
- stream of responses from the server (e.g. downloading large files, real-time updates…)
- Client streaming RPC
- stream of requests from the client
- server returns one response (use case: uploading files, batch operations)
- Bidirectional RPC
- client and server send streams
- e.g. chat applications, real-time collaboration