One Year of Load Balancing
algolia.com
algolia.com
However the solution here is to use SRV records. I wonder if we will ever be able to use SRV records for HTTP. This way even if the response is cached and served to all of backend servers the application can still round-robin as it knows about the available servers.
I also wonder if it would make sense to add some standardized load-balancing headers to HTTP. For example I can imagine a `Prefer-Other` header that suggested another peer that should be used for future requests or more simply just told it to use another peer if it was aware of any. (for example an A or SRV lookup returned multiple servers) If we want to get even fancier we could do something like return `Load: [0-1]` which the client can use to load balance when it is connected to multiple servers. It should prefer sending most of its load to the least loaded server. There would be a lot of details to work out but it seems that some basic primitives could go a long way.
It is being planned as we speak! :-)
There's the ALTSVC proposal, now replaced by the SVCB and HTTPSSRV proposals:
https://tools.ietf.org/html/draft-ietf-dnsop-svcb-httpssvc-0...
It has a higher chance of being adopted than previous use of SRV records, because it will speed up HTTP/3 by removing a round trip to query a HTTP server to check for HTTP/3.
And is it just me or do these cats pictures feel misplaced in such a blog post?