[ https://issues.apache.org/jira/browse/ZOOKEEPER-571?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17938162#comment-17938162 ]
Chevaris commented on ZOOKEEPER-571: ------------------------------------ I have experimentally used cf.getZookeeperClient().getZooKeeper().getTestable().closeSocket() to periodically close the connections and eventually achieve balance connections between servers (making it periodically and with some dispersion. I have NOT found any single problem in this approach. Can we start making this method as a public API in order to support this use case? > support balancing of client load across servers in an ensemble > -------------------------------------------------------------- > > Key: ZOOKEEPER-571 > URL: https://issues.apache.org/jira/browse/ZOOKEEPER-571 > Project: ZooKeeper > Issue Type: Improvement > Components: quorum, server > Reporter: Patrick D. Hunt > Priority: Major > > Currently the ensemble does not ensure a balanced load across servers in an > ensemble. Clients randomly connect to > a server, which typically balances the number of sessions. However there are > problems with this: > 1) session count is balanced, but not session load > 2) if server A goes down all of the sessions on that server migrate to other > servers in the cluster randomly, this is fine, however > when server A comes back into service it will have no sessions, and migration > of sessions from other servers may take time > The quorum should probably have some way of broadcasting load, and > occasionally re-balance the sessions based on > this information. Might be tricky though, want to ensure that we aren't > constantly ping-ponging sessions to servers. > Probably need some hysteresis as well as limit the frequency. Real time > tuning would need to be supported. -- This message was sent by Atlassian Jira (v8.20.10#820010)