Trzy dominujące opcje to REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) i message queues (Kafka/RabbitMQ). REST i gRPC są synchroniczne; kolejki są asynchroniczne.
Trzy dominujące opcje to REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) i message queues (Kafka/RabbitMQ). REST i gRPC są synchroniczne; kolejki są asynchroniczne.
| Aspekt | REST | gRPC | Message Queue |
|---|
| Styl | Synch | Synch | Async |
| Payload | JSON (tekst) | Protobuf (binarny) | Dowolny (często binarny) |
| Wydajność | Dobra | Wysoka | Wysoka przepustowość |
| Umowa | OpenAPI (luźna) | .proto (ścisła) | Schema/event |
| Streaming | Ograniczony | Natywny (bidi) | Pub/sub |
| Najlepszy dla | Publiczne API, przeglądarki | Ścieżki wewnętrzne krytyczne | Decoupling, zdarzenia |
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)
Użycie sync gRPC/REST wszędzie powoduje ponowne stworzenie ścisłego sprzężenia; użycie async do bezpośredniego odczytu użytkownika dodaje niepotrzebne opóźnienie.
Wybór transportu ustawia sprzężenie i pułap wydajności dla każdej interakcji, więc wybór dla każdego przypadku użycia — nie globalnie — to to, co utrzymuje system zarówno szybki, jak i odporny.
Dojrzałe systemy celowo łączą wszystkie trzy: gRPC na wewnętrznych ścieżkach krytycznych, REST na krawędzi i kolejki dla przepływów pracy.