Tri dominantne opcije su REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) i redovi poruka (Kafka/RabbitMQ). REST i gRPC su sinkroni; redovi su asinkroni.
Tri dominantne opcije su REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) i redovi poruka (Kafka/RabbitMQ). REST i gRPC su sinkroni; redovi su asinkroni.
| Aspekt | REST | gRPC | Message Queue |
|---|
| Stil | Sync | Sync | Async |
| Opterećenje | JSON (text) | Protobuf (binary) | Any (often binary) |
| Performanse | Good | High | High throughput |
| Ugovor | OpenAPI (loose) | .proto (strict) | Schema/event |
| Streaming | Limited | Native (bidi) | Pub/sub |
| Najbolje za | Public APIs, browsers | Internal hot paths | Decoupling, events |
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)
Korištenje sinkronog gRPC/REST svugdje ponovno kreira čvrsto spajanje; korištenje asinkronog za trenutnu korisnički čitanje dodaje nepotrebno kašnjenje.
Izbor transporta postavlja spajanje i granica performansi za svaku interakciju, tako da odabir po slučaju upotrebe — a ne globalno — je ono što čini sustav i brzim i otpornim.
Zreli sustavi namjerno miješaju sva tri: gRPC na unutarnjim vrućim putanjama, REST na periferiji i redove za radne tokove.