-
Notifications
You must be signed in to change notification settings - Fork 61
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
server: add upstream connection rebalancing
Adds support for rebalancing upstream connections across the cluster. Every second each node calculates it's connection "balance", which is the ratio of the number of connections the node has locally to the cluster average. If a node finds it's balance exceeds the configured threshold, it will shed connections. Since the Piko cluster is typically hosted behind a load balancer, when connections are shed, clients will automatically reconnect to random node in the cluster, so eventually the nodes connections will be balanced. This does mean rebalancing isn't perfect, as an upstream may be disconnected and reconnect to the node that's already shedding connections, but it's the best we can do. It will cause minor disruption while upstreams reconnect, though the alternative is to overload Piko nodes with no way to rebalance load. By default rebalancing is disabled. Fixes #176.
- Loading branch information
1 parent
ccc728f
commit b8c07b4
Showing
7 changed files
with
291 additions
and
8 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.