Cele trei opțiuni dominante sunt REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) și cozi de mesaje (Kafka/RabbitMQ). REST și gRPC sunt sincrone; cozile sunt asincrone.
Cele trei opțiuni dominante sunt REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) și cozi de mesaje (Kafka/RabbitMQ). REST și gRPC sunt sincrone; cozile sunt asincrone.
| Aspect | REST | gRPC | Message Queue |
|---|
| Stil | Sinc | Sinc | Asinc |
| Payload | JSON (text) | Protobuf (binar) | Orice (adesea binar) |
| Performanță | Bună | Înaltă | Debit înalt |
| Contract | OpenAPI (liber) | .proto (strict) | Schema/event |
| Streaming | Limitat | Nativ (bidi) | Pub/sub |
| Optim pentru | API-uri publice, browsere | Căi interne critice | Decuplare, evenimente |
service OrderService {
// strongly-typed RPC, generated client + server stubs
rpc GetOrder (OrderId) returns (Order);
}
message OrderId { string id = 1; }
message Order { string id = 1; double total = 2; }
Order Service ─publish→ [ "OrderPlaced" topic ] ─▶ Inventory
└────▶ Notifications
(producer doesn't know or wait for consumers)
Folosirea gRPC/REST sincroni peste tot recreează cuplare strânsă; folosirea asincrona pentru citirea imediată a unui utilizator adaugă latență inutilă.
Alegerea transportului stabilește cuplarea și plafonul de performanță pentru fiecare interacțiune, deci a alege pe caz de utilizare — nu global — este ceea ce ține sistemul atât rapid cât și rezistent.
Sistemele mature amestecă deliberat toate trei: gRPC pe căi interne critice, REST la margine și cozi pentru fluxuri de lucru.