[ 
https://issues.apache.org/jira/browse/ZOOKEEPER-1355?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13497349#comment-13497349
 ] 

Alexander Shraer commented on ZOOKEEPER-1355:
---------------------------------------------

I think that it doesn't affect backward compatibility.  The code works as 
before unless updateServerList is actually invoked. When it does, it updates 
the list of servers with a new shuffled list and then uses new logic to choose 
the first server to connect to from this list. If it succeeds to connect or 
tried all servers and failed to connect, we return to the "normal mode" of just 
going round-robin over the new shuffled list. No configuration files are 
touched here and nothing on the server side changed.
                
> Add zk.updateServerList(newServerList) 
> ---------------------------------------
>
>                 Key: ZOOKEEPER-1355
>                 URL: https://issues.apache.org/jira/browse/ZOOKEEPER-1355
>             Project: ZooKeeper
>          Issue Type: New Feature
>          Components: c client, java client
>            Reporter: Alexander Shraer
>            Assignee: Alexander Shraer
>             Fix For: 3.5.0
>
>         Attachments: loadbalancing-more-details.pdf, loadbalancing.pdf, 
> ZOOKEEPER-1355-10-Oct.patch, ZOOKEEPER-1355-12-Oct.patch, 
> ZOOKEEPER-1355-13-Nov.patch, ZOOKEEPER-1355-13-Nov-ver2.patch, 
> ZOOKEEPER-1355-13-Oct.patch, ZOOKEEPER-1355-6-Nov.patch, 
> ZOOKEEPER-1355-6-Nov-ver2.patch, ZOOKEEPER-1355-ver10-1.patch, 
> ZOOKEEPER-1355-ver10-2.patch, ZOOKEEPER-1355-ver10-3.patch, 
> ZOOKEEPER-1355-ver10-4.patch, ZOOKEEPER-1355-ver10-4.patch, 
> ZOOKEEPER-1355-ver10.patch, ZOOKEEPER-1355-ver11-1.patch, 
> ZOOKEEPER-1355-ver11.patch, ZOOKEEPER-1355-ver12-1.patch, 
> ZOOKEEPER-1355-ver12-2.patch, ZOOKEEPER-1355-ver12-4.patch, 
> ZOOKEEPER-1355-ver12.patch, ZOOKEEPER-1355-ver13.patch, 
> ZOOKEEPER-1355-ver14.patch, ZOOKEEPER-1355-ver2.patch, 
> ZOOKEEPER=1355-ver3.patch, ZOOKEEPER-1355-ver4.patch, 
> ZOOKEEPER-1355-ver5.patch, ZOOKEEPER-1355-ver6.patch, 
> ZOOKEEPER-1355-ver7.patch, ZOOKEEPER-1355-ver8.patch, 
> ZOOKEEPER-1355-ver9-1.patch, ZOOKEEPER-1355-ver9.patch, 
> ZOOOKEEPER-1355.patch, ZOOOKEEPER-1355-test.patch, ZOOOKEEPER-1355-ver1.patch
>
>
> When the set of servers changes, we would like to update the server list 
> stored by clients without restarting the clients.
> Moreover, assuming that the number of clients per server is the same (in 
> expectation) in the old configuration (as guaranteed by the current list 
> shuffling for example), we would like to re-balance client connections across 
> the new set of servers in a way that a) the number of clients per server is 
> the same for all servers (in expectation) and b) there is no 
> excessive/unnecessary client migration.
> It is simple to achieve (a) without (b) - just re-shuffle the new list of 
> servers at every client. But this would create unnecessary migration, which 
> we'd like to avoid.
> We propose a simple probabilistic migration scheme that achieves (a) and (b) 
> - each client locally decides whether and where to migrate when the list of 
> servers changes. The attached document describes the scheme and shows an 
> evaluation of it in Zookeeper. We also implemented re-balancing through a 
> consistent-hashing scheme and show a comparison. We derived the probabilistic 
> migration rules from a simple formula that we can also provide, if someone's 
> interested in the proof.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to