Naše mikroslužby komunikují přes REST s JSON. Funguje to, ale serializace JSON je pomalá, schéma neexistuje a streaming je hack. gRPC řeší všechny tři problémy.
Co je gRPC¶
RPC framework od Googlu. Protocol Buffers pro serializaci (binární, kompaktní, typované) a HTTP/2 jako transport (multiplexing, streaming).
syntax = "proto3";
service OrderService {
rpc CreateOrder (CreateOrderRequest) returns (Order);
rpc StreamUpdates (GetOrderRequest) returns (stream OrderUpdate);
}
message Order {
string id = 1;
string status = 2;
}
Výkonnostní rozdíl¶
- Serializace: protobuf 3-5x rychlejší než JSON
- Payload: protobuf 2-3x menší
- Latence: gRPC ~30 % nižší díky HTTP/2
- Streaming: gRPC nativní
Kde gRPC, kde REST¶
gRPC: interní služba-služba, high-throughput streaming. REST: veřejné API, browser, třetí strany. Envoy umí gRPC-JSON transcoding na hranici systému.
gRPC je ideální pro interní mikroslužby¶
Pro veřejné API REST, pro interní komunikaci gRPC — typovaný kontrakt, vysoký výkon a nativní streaming. Postupně migrujeme.