The happy eyeballs algorithms tries to connect over both IPv6 and IPv4
at the same time. Accordingly, the hostname has to be resolved for both
address families which both may potentially contain any number of
records (load balancing).
This changeset randomizes the order of returned IP addresses per address
family. This means that if multiple records are returned, it will try to
connect to a random one from this list instead of always trying the
first. This allows the load to be distributed more evenly across all
returned IP addresses. This can be used as a very basic DNS load
balancing mechanism.
The happy eyeballs algorithms tries to connect over both IPv6 and IPv4 at the same time. Accordingly, the hostname has to be resolved for both address families which both may potentially contain any number of records (load balancing).
This changeset randomizes the order of returned IP addresses per address family. This means that if multiple records are returned, it will try to connect to a random one from this list instead of always trying the first. This allows the load to be distributed more evenly across all returned IP addresses. This can be used as a very basic DNS load balancing mechanism.
This is similar to what the old
DnsConnector
did (it always tried one random IP from the list of IPs). See also https://daniel.haxx.se/blog/2012/01/03/getaddrinfo-with-round-robin-dns-and-happy-eyeballs/ for some background information.