Trys dominuojančios parinktys yra REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) ir pranešimų eilės (Kafka/RabbitMQ). REST ir gRPC yra sinchroniniai; eilės yra asinchroninės.
Trys dominuojančios parinktys yra REST (HTTP/JSON), gRPC (HTTP/2 + Protobuf) ir pranešimų eilės (Kafka/RabbitMQ). REST ir gRPC yra sinchroniniai; eilės yra asinchroninės.
| Aspektas | REST | gRPC | Pranešimų eilė |
|---|
| Stilius | Sinchroninis | Sinchroninis | Asinchroninis |
| Naudingoji apkrova | JSON (tekstas) | Protobuf (binarinis) | Bet kokia (dažnai binarinė) |
| Našumas | Geras | Aukštas | Didelis pralaidumas |
| Kontraktas | OpenAPI (laisvas) | .proto (griežtas) | Schema/įvykis |
| Transliavimas | Ribotas | Natyvus (dvikryptis) | Pub/sub |
| Geriausiai tinka | Viešieji API, naršyklės | Vidiniai aukšto greičio keliai | Atsiradimas, renginiai |
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)
Sinchroninio gRPC/REST naudojimas visur iš naujo sukuria stiprų susiejimą; asinchroninio naudojimas naudotojo tiesioginiam skaitymui prideda nereikalingą delsą.
Transporto pasirinkimas nustato susiejimo ir našumo viršutinę ribą kiekvienai sąveikai, todėl pasirinkimas pagal kiekviena panaudojimo atvejį — ne pasauliniu mastu — yra tai, kas leidžia sistemos būti ir greita, ir atsparia.
Brendžios sistemos sąmoningai sumaišo visus tris: gRPC vidiniais aukšto greičio keliais, REST šoninėje dalyje ir eilės darbo srautams.