Releases: bufbuild/httplb
v0.3.1
v0.3.0
This updates the behavior of the DNS resolver to have greater compatibility in the event that DNS results include both A (IPv4) and AAAA (IPv6) records. Due to how "httplb" treats each resolved address as a separate, distinct target, it cannot implement the "RFC 6555 Happy Eyeballs" algorithm for detecting dual-stack support. So, in practice, DNS results of this sort would cause problems when in a network environment without full support for IPv6.
This new version includes slight changes to the API when creating a new DNS resolver in order to make configuration more intuitive and also to provide more options. It also changes the default behavior to only use IPv6 addresses if DNS results contain only AAAA records (i.e. no IPv4 addresses).
What's Changed
Other changes
- Implement address family affinity and prefer IPv4 by default by @jchadwick-buf in #66
Full Changelog: v0.2.1...v0.3.0
v0.2.1
What's Changed
Bugfixes
- Fix panic bugs in least-loaded picker implementation by @jhump in #61 and #63
- Fix WithProxy documentation to correctly describe behavior with nil by @jchadwick-buf in #64
New Contributors
- @emcfarlane made their first contribution in #57
Full Changelog: v0.2.0...v0.2.1
v0.2.0
This release includes some additions meant to help when using this client to communicate with servers that are behind a layer-3 TCP load balancer (which includes Kubernetes services when both client and server are in the same Kubernetes cluster).
In these cases, DNS may resolve only to a single IP address for the load balancer, and since it only balances connection establishment (since it's layer-3, not layer-7/HTTP) this could result in poor load distribution, such as all traffic being sent to a single backend.
What's Changed
Enhancements
- Add
resolver.MinConnections
by @jhump in #58- When it is expected that the resolver (such as DNS) could return few addresses (or even only one), this will cause the client to create additional connections anyway. If the server is a layer-3 TCP load balancer, each connection created is likely to be connected to a different backend, to aid load distribution.
- Add
httplb.WithRoundTripperMaxLifetime
, which causes connections to be periodically recycled by @jhump in #60- As connections organically come and go, like from backends being turned down and up (like during software deploys or when the backend servers are scaled up and down as traffic volume changes), it is possible for multiple connections through a layer-3 TCP load balancer to end up connected to a small number of actual backends (even potentially only one). To ensure connection diversity and mitigate this situation, this option can be used to cause connections to be continually re-established.
Full Changelog: v0.1.0...v0.2.0
v0.1.0
What's Changed
This is the first release of httplb
, a library that brings configurable load balancing, name resolution, and subsetting to net/http
clients.
Contributors
Full Changelog: https://github.com/bufbuild/httplb/commits/v0.1.0