afc
Joined 15 years ago
Joined 15 years ago
A technique we've used to deal with this situation: in the overloaded backend (that has to reject some percentage of incoming requests), group the incoming requests by the parent request (the one with the 1:15 fan out) and reject according to the parent request. One way to put it, simply (though somewhat inaccurately), would be: reject 100% of traffic from 20% of users, rather than 20% of traffic across all users (causing essentially full failure for all users).
We typically implemented this by propagating an ID of the parent request down to the backend. I'm simplifying a lot in this description (e.g. have to deal with the parent requests landing on different backend tasks; also rotate the IDs gradually to introduce some fairness).
Suddenly you push an update to your tiny server or one of its thousands of clients and, because of some bug or misconfiguration, traffic or per-request-resource-consumption grows 1000X or more. Given the size of the looong tail of small servers at Google, this would be a daily occurrence.
This is the wrong way to think about this because there's no such thing as infinite capacity. A large distributed system will be simultaneously mostly idle and (in some subcomponents) overloaded. The root cause is not "a component didn't have enough capacity (because of auto scaling failures)", but rather "this complex system collapses (rather than degrade gracefully) when demand exceeds capacity".
When components reach capacity limits, the excess traffic of the lowest priority should be rejected. Rejected traffic should not be retried — in fact, not only should clients not retry these errors, these errors should cause client-side throttling. Traffic isolation should be applied — if the cause of the overload is a single client/customer system, no other system should be affected.
Nearly a decade ago I wrote about some of the techniques we applied at Google to implement these protections: https://sre.google/sre-book/handling-overload/ Most other large internet services have since copied them, afaik.
I experienced this so strongly I spent some time actually writing a poem (in Spanish) about it: https://alejo.ch/39l
However, even though I also think nothing comes even close to parenthood for me, my perspective is that society strongly encourages —I'd even say strongly pressures— people to have kids, to feel that if you don't, it's almost like something is wrong with you. Maybe we're just different generations? :-)
* Median household income in Mississippi: $44,717
* Median wage in Germany: €5,370 per month, equals $73,565.
So even the individual median wage in Germany is more than 50% higher than the median household income in Mississippi.
Sources: https://en.wikipedia.org/wiki/List_of_European_countries_by_... and https://en.wikipedia.org/wiki/List_of_U.S._states_and_territ...
In essence, we run many short agent loops, generating their prompts dynamically from structured data. Each loop advances the state in a small step towards the final goal.
I guess I'll hide this submission and do another one with the right url.
Sorry for that and thanks for pointing it out.
In case you find it useful, I wrote what I learned in my first year of fatherhood (the little guy is now 17 months): https://alejo.ch/3hj
As you can see, I never found anything as scary as the possibility, however remote, of my baby being unhealthy. So, yeah, best of luck!