Currently, when you have a group of resolvers, your options are limited to round robin, random, fail-rotate, fail-back, and fastest. While these all work, there's a problem when one or two resolvers experience latency and/or timeout issues that aren't currently accounted for. Recently, one of my resolvers timed out, and any queries routed to that resolver failed, causing issues for end devices.
In AdGuard Home, it offers a load balancing option that factors in response times and failures. Here are all of their options:
It is also an open source project written in Golang https://github.com/AdguardTeam/AdGuardHome/
The DNS part like the above options are handled by this https://github.com/AdguardTeam/dnsproxy
I also think renaming fastest to parallel would be more accurate. However, that would be a breaking change for users currently using that option.
Currently, when you have a group of resolvers, your options are limited to round robin, random, fail-rotate, fail-back, and fastest. While these all work, there's a problem when one or two resolvers experience latency and/or timeout issues that aren't currently accounted for. Recently, one of my resolvers timed out, and any queries routed to that resolver failed, causing issues for end devices.
In AdGuard Home, it offers a load balancing option that factors in response times and failures. Here are all of their options:
It is also an open source project written in Golang https://github.com/AdguardTeam/AdGuardHome/
The DNS part like the above options are handled by this https://github.com/AdguardTeam/dnsproxy
I also think renaming
fastesttoparallelwould be more accurate. However, that would be a breaking change for users currently using that option.