Hasn’t this problem been well understood for a long time? I recall ten, fifteen years ago, our reverse caching proxy would let us serve stale requests for a given location while exactly one actual request got through. Isn’t what they describe more or less that?
Based on what I've seen on mobile, Reddit's engineering talent is not highly skilled or top-notch. Probably the last company I would take engineering advice from.
> The Three Stooges were a slapstick comedy trio (if you’re under 40, ask your parents).
Meta: it used to be that any society used to have fairly consistent cultural references that could be rely upon for analogies and such.
Seems with either (a) a larger population, and/or (b) a rising tide of more sub-niches and fracturing in entertainment (music, TV, movies, etc), it's getting harder to a common base to draw upon.
I was just about to comment on this, but in a different way. I'm 26, most of my friends are early-to-mid twenties, and all of them would get a Three Stooges reference, or at least know who they are. It almost always feels super condescending to say it like "if you're under..." as opposed to "if you don't know them, they were a staple of physical comedy and comedy of errors, you should definitely look them up". Definite "You wouldn't get it kid" vibes that I'm never a fan of.
> it used to be that any society used to have fairly consistent cultural references that could be rely upon for analogies and such.
I wouldn't agree with that, or at least I wouldn't put this nearly as recent as you make it sound. I think that idea fell away when we stopped having folk tales. In America, I would point to the fall of the tall tale, like Paul Bunyan or John Henry. As someone who grew up adjacent to Appalachia, story-telling was a big part of my cultural education. I think it's something I was to pass to my kids too.
As a side note, in making this comment I came across the wikipedia page for "American Folklore" and it's actually a really interesting read.
Culture went through a brief period of heavy homogenisation while terrestrial television was a big thing. The Three Stooges never aired in my country, but I still got the reference.
It's still homogenised, and with the advent of the commercial internet, subcultures are exposed to reactionary backlash before they have time to properly develop and establish themselves.
You're right. My parents used to witter on about all sorts of old fashioned things that I've remembered and refer to (e.g. Monty Python quotes) simply because my parents and The Simpsons were almost all I had as cultural guides. I know who the Three Stooges are entirely because of a reference a doctor makes in The Simpsons! https://www.youtube.com/watch?v=gmBj8r1-fDo
Nowadays, the Internet offers thousands of entertainment choices in every sub genre with a million memes generated every minute and modern audiences like that, so until The Three Stooges turn up in a popular GIF or TikTok...
It was interesting to see the most-disliked YouTube Rewind. There were so many large YouTube channels and communities in the video that the average viewer wouldn't recognise most of them.
I completely agree. I fear that the lack of a common cultural ground will make society even more individualistic, antagonistic and enforce the existing tribe mentality even further.
It is also something I don't see getting any better. There are a lot more divisive trends right know than uniting in my opinion.
I think the larger problem is that hyper-local used to mean your neighborhood, family/friends, and generally the people around you. You went to the same places, you saw each other often, you interacted.
In general, this is not the case anymore. In general, the wide-wide world huge tribe has invaded the hyper-local space via politics, religion, or whatever else and has segmented even those local spaces.
Neighborhood block parties were a thing in the area I live, up until about 2004. Now they're a quaint weird one-off that one local neighborhood does. People don't know each other, other than to know that Joe lives in that house, and Sara lives in that one, with no context about who they are; until Joe puts a Trump flag up, now everyone knows what he's about.
I don't know what my purpose is for writing that, it's just an observation I've made.
A lot of that hyperlocality was because the only way to hear music was to go to a live performance. The only way to enjoy a dramatic performance was to go to a live performance. In the era before widespread dissemination of printed materials and widespread literacy, the only way to enjoy a literary work was to—you guessed it—go to a live performance. This meant, among other things, that there was a period of time when a larger portion of the population was able to make a living (albeit not necessarily a good living) through arts performance. Jerry Lewis, for example, got into show business to support his family (this was also the case with the Marx brothers a generation earlier). As technology has increased the ability to disseminate artistic work, it has become a smaller fraction of the population gaining a wider audience. Some of the trends, e.g., streaming music, have ended up with recorded music becoming economically unviable for smaller acts (the numbers are widely disseminated so I won't get into that). Not sure where things are going from here, or what the anomalous period in human culture really was or will be.
Would it be feasible to do some "intelligent" TTL updates? By which I mean, don't let the cached data expire automatically. Instead, query a service that informs it of any outage on the backend. If an outage exists, the TTL is renewed. Otherwise, the TTL is expired.
For the `F5` spammers, they would be served with the stale data, until the backend recovers from the outage.
I'm sure I've missed some obvious reason why this isn't a good idea. I'd love to know why.
I think the problem is the service that feeds the cache durations is something that can itself have an outage, which itself could trigger a cache stampede. Usually to solve these kinds of problems you want less new blocks in the block diagram, not more.
If you don't mind serving stale content, you can do exactly the opposite. Instead of a relatively short TTL that gets extended for failure one can set an infinite TTL and actively eject data that's been updated. In either case, having a separate service handle checking the query and timing out the cache content that is neither part of the frontend nor backend is another thing that can break but can be a fairly simple, isolated thing that doesn't break consistently along with either the frontend or backend.
This seems reasonable for a read-heavy system (like Reddit). In a failure, the content on the site would just get staler and staler, but there wouldn't be a heavy outage.
This is like the “fail open vs fail closed” question. It depends on what is worse. For legal reasons, they might need the ability to say “yes, we can guarantee we will be no longer serving this content within 1 hour”.
In their defense (?) their mobile app is generally pretty responsive when it works; it's mostly just the website that's wildly, unfathomably laggy, unresponsive, and difficult to use.
Why acquire the lock first, then check the cache? Instead of check the cache first, and only acquire lock on cache miss? Seems like a lot of unnecessary locking
I have little experience with server development. Why should it ever be the case that no requests are served? Why doesn't first come, first served apply (to some degree)? Is it assumed that every request to a web server will get its own thread, or what?