What if the backends announced their load via multicast? Then every client could know the load of every backend, and could continue to use P2C or something like that, without needing to maintain a socket for every backend.<p>There's still a problem to solve, because you don't want to be opening and closing connections to backends all the time - you want to reuse a small number of connections. So maybe you keep a set of connections open, distribute requests between them using P2C or a weighted random choice, but also periodically update the set according to load statistics.