Look up Bittorrent, and bandwidth diffusion generally. Also look up
multicast trees.
Sometimes it's faster for a client to send to many servers; sometimes
it's faster to send fewer and have them relayed by intermediaries -
because every packet takes time to transmit, and network topologies
aren't always homogenous or symmetric.
There is no simple answer which is optimal for all networks.
Leader election is part of standard Paxos too :-)
If you have a single data forwarder elected per client, then if one
client generates a lot of traffic, you concentrate a lot of traffic to
one network link and one CPU. Sometimes it's better to elect several
leaders per client, and hash requests onto them. You diffuse CPU and
traffic, but reduce opportunities to aggregate transactions into fewer
message. It's an interesting problem, again probably with different
optimal results for different networks.
-- Jamie
--