How Uber Protects Against Retry Storms

uber.com

86 points by iscmt 10 hours ago


prologic - 6 hours ago

So, effectively if A → B → C → D and D is failing, C may retry D, but B and A are discouraged from retrying the whole chain.

This is quite slever. I also really like the concept of an "Error Budget", inspired by SRE and SLO(s) no doubt :)

Scoundreller - 6 hours ago

Meanwhile Google keeps giving me “please wait, do not reload page” walls, so I ctrl-r as rapidly as possible. Or is that the human test and response?

whatever1 - 2 hours ago

Easy. Take a larger cut from the driver for each retry.

maxchisto - 8 hours ago

I'm suspicious of load shedding not mentioned in the article. Combine that with exp backoff in the caller and you got yourself a pretty robust starting point

aftbit - 9 hours ago

I'd be interested to hear other strategies in this space. I've done the naive thing of allowing retries everywhere, and gotten into retry storms. When I was next presented with the problem, I tried the other naive thing of only allowing retries from the very top level service, which led me to redoing absolutely tons of work for each failure. What's a nice middle path that doesn't add too much complexity?

UltraSane - 6 hours ago

This feels like trying to reinvent Fibre Channel's flow control mechanism.

whoevercares - 7 hours ago

Token bucket is all you need

iwontberude - 3 hours ago

[dead]