Kolme hallitsevaa vaihtoehtoa ovat REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) ja message queues (Kafka/RabbitMQ). REST ja gRPC ovat synkronisia; jonot ovat asynkronisia.
Kolme hallitsevaa vaihtoehtoa ovat REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) ja message queues (Kafka/RabbitMQ). REST ja gRPC ovat synkronisia; jonot ovat asynkronisia.
| Näkökulma | REST | gRPC | Message Queue |
|---|
| Tyyli | Synkroninen | Synkroninen | Asynkroninen |
| Hyötykuorma | JSON (teksti) | Protobuf (binääri) | Mikä tahansa (usein binääri) |
| Suorituskyky | Hyvä | Korkea | Korkea siirtohinta |
| Sopimus | OpenAPI (löysä) | .proto (tiukka) | Schema/event |
| Suoratoisto | Rajallinen | Natiivi (kaksisuuntainen) | Pub/sub |
| Paras käyttöön | Julkiset API:t, selaimet | Sisäiset kriittiset polut | Kytkennän irrotus, tapahtumat |
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)
Synkronisen gRPC/REST:n käyttö kaikkialla luo uudelleen tiiviin kytkennän; asynkronisen käyttö käyttäjän välittömään lukemiseen lisää tarpeettoman viiveen.
Kuljetusten valinta määrittelee kytkennän ja suorituskyvyn ylärajan jokaiselle vuorovaikutukselle, joten valinta käyttötapauksen mukaan — ei globaalisti — on se, mikä pitää järjestelmän sekä nopeana että kestävänä.
Kypsät järjestelmät sekoittavat tarkoituksellisesti kaikki kolme: gRPC sisäisillä kriittisillä poluilla, REST reunalla ja jonot työnkuluille.