Skip to content

Latest commit

 

History

History
32 lines (25 loc) · 803 Bytes

DesignPrinciples.md

File metadata and controls

32 lines (25 loc) · 803 Bytes

interaction model:

  • request / response
  • request / stream
  • push notification (via subscription)
  • fire and forget

Persitent connection, full duplex, multiplexed Binary encoding (for the protocol itself) Preference for zero-copy Favor extensibility over fixed size messages Back-pressure notification [reactive stream semantics]

Abstracted from the transport, but we are targeting:

  • websockets
  • tcp with framing
  • aeron

Need to handle:

  • msg routing
  • load shedding
  • autoscaling
  • failure recovery

Prefer stateless, but statefulness is an optimization.

Prefer false start semantics to reduce round-trip time.

Subscription assumes idempotent redundent delivery!

We are assumming polyglot libraries, we target:

  • Java
  • Javascript [node.js, and browser]