ZK实现HA和负载均衡

思路:

zk做路由,client从zk那里拿到可用的server地址(最好这里做个缓存),通过自己的负载均衡算法得到要连接的地址,client去连接指定server,

server要做的是,当server启动后去zk注册自己(创建临时文件),子节点变化

当某台server宕机,server与zk的链接会断掉,zk会自动删除该临时文件,子节点变化

zk的watcher会通知client更新可用地址

关键代码:

zooKeeper.getChildren(PUB_PATH, new Watcher() {
            public void process(WatchedEvent watchedEvent) {
                if (watchedEvent.getType()== Event.EventType.NodeChildrenChanged){
                    //当子节点变化时触动,做HA时,在这里从新遍历子节点,选择可用Server
                }
            }
        });

 

负载均衡算法:轮询法、随机法、源地址哈希法、加权轮询法、加权随机法、最小连接数法

posted @ 2018-03-14 12:33  猴子1  阅读(564)  评论(0编辑  收藏  举报