3 ms·
In my experience the amount of serialized (network blocking) calls needed under the request reply paradigm always grows over time as the application gets larger
by klabb3 4y ago
In my experience the amount of serialized (network blocking) calls needed under the request reply paradigm always grows over time as the application gets larger.
At least this limitation can cause massive complexity once perf optimizations are needed. I think that’s important to factor in when we’re talking about the issues with large and resilient systems in either paradigm.
Personally I like message passing because it’s more true to the underlying protocol (TCP or UDP) and actually interops quite well (all things considered) with request-reply systems - it just requires two separate messages and a request id which is standard practice in request-response anyway. The inverse is not true though: we have like 10 different hacky solutions in the last decade for sending server initiated messages to clients.
- naasking 4y agoRequest/reply is also message passing, it's just synchronous rather than asynchronous. To reduce blocking while preserving synchronous semantics, you can immediately return a future as your reply.
- stolsvik 4y agoTotally agree that HTTP can also be considered message passing, just synchronous! Wrt. returning a Future, this is what the MatsFuturizer does, giving you a sync-async bridge into the "Mats fabric": https://mats3.io/docs/sync-async-bridge/ https://mats3.io/docs/sync-async-bridge/