On Queues
Queues are a fundamental building block for proper system designs. By decoupling the producer and consumer, get the following benefits
- A storage to avoid dropping packets. Note, queues do not prevent requests getting dropped but they certainly help.
- Asynchronous API: let’s the user fire out an expensive request without blocking for it’s response.
- Fan out
- Horizontal Scaling
However, it is really easy to design queues improperly that greatly limit performance. A more performant queue leads to a higher service rate which helps deter against back pressure– that is, the more performant the queue the less dropped packages.
Resources: