Zookeeper学习系列(7)

原创
2014/07/01 23:14
阅读数 192

Zookeeper场景描述

在分布式的应用中,我们经常同时启动多个server,调用方(client) 选择其中之一发起请求。

分布式应用必须考虑高可用性和可扩展性:server的应用进程可能会崩溃。或者server本身可能也会dwon机。当server不够时,也有可能增加server的数量,总而言之,server列表并非一成不变的,而是一直处于动态的增减中。

那么client热河才能实时的更新server列表呢?解决的方案很多,Zookeeper是一个方案。


思路:

启动server时候,在Zookeeper的某个znode(假设为/sgroup )下创建一个子阶段。所创建的子节点的类型应该为ephemeral,这样子依赖,如果server 进程崩溃或者serverdown机,与Zookeeper连接的 Session就结束了,那么其的所有创建的子节点会被 Zookeeper自动删除,当崩溃的server恢复后,或者新增server时候,同样需要在/sgroup 节点下创建新的子节点。


对于client。只需注册/sgroup 子节点的监听,当 。/sgroup 下的子节点增加或者减少,Zookeeper会通知client,此时client更新server列表。



展开阅读全文
打赏
0
3 收藏
分享
加载中
更多评论
打赏
0 评论
3 收藏
0
分享
返回顶部
顶部