3 ms·
> Circuit breaking, exponential backoff, bulkheading should be key pillars and no dev should be allowed to write a client without these key skills. This is all
by wtmt 6y ago
> Circuit breaking, exponential backoff, bulkheading should be key pillars and no dev should be allowed to write a client without these key skills.
This is all the more critical for client applications that depend on app stores to review and approve updates and end users who may not immediately update to a newer version because they don’t have auto update turned on.
Edit: I can’t seem to find it, but there was a comment recently about servers using flags to tell clients to shut up for a specific duration and avoid exacerbating problems with retries. I think it was about some specific design of Dropbox.
- eli 6y agoThere’s a whole HTTP status for “you are connecting too fast” but that assumes the server is kinda working. https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429 https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429
- mey 6y agoMost client code I have ever seen unfortunately only ever looks for status code != 200
- ju-st 6y agoSignal started to handle 404 7 months ago and the 508 code 13 hours ago. (https://github.com/signalapp/Signal-Android/blame/master/libsignal/service/src/main/java/org/whispersystems/signalservice/api/SignalServiceMessagePipe.java https://github.com/signalapp/Signal-Android/blame/master/lib... strg+f 508)
- maxpert 6y agoAgreed server should have a rate-limiting on each account to prevent DDoSing in future.
- amluto 6y agoIn an emergency, one could rig up a server to drop TCP connections without sending RST. The result would be a client that thinks it’s connected without using server resources. Bonus points for some code on the server that responds to some fraction of incoming segments with ACKs to keep stringing clients along.
- toast0 6y agoIt's pretty effective to drop a percent of incoming SYNs. But if you're behind a load balancer, and the load balancer doesn't know to do that, you can't do it on the origins, because the load balancer will fail the origins and that's not good.
- salawat 6y agoComputing isn't free. Energy is being produced/generated somewhere to prop up the demand created by the system you put in place, and your network congestion adversely effects everyone else. Don't let the "transparency" of the network lull you into Tragedy of the Commons behavioral patterns. Act with intention. If you find your thing is overwhelming your own capacity to handle traffic, either implement rate modulation capability, or restructure your program to mitigate whatever is creating the problem. Just because there are selfish. a-holes who think the internet is an infinite resource intended solely for their own enjoyment, convenience and exploitation, does not mean it is okay for everyone to act that way. Not that anyone in this case is one of those types of person mind, but it's worth pointing out. This seems more like unexpected growth far outstripping provisioned resources.