需求
某个分布式系统中,主节点服务器可以有多台,可以动态上下线,任意一台客户端机器都能实时感知到主节点服务器的上下线
当qps上来时,上线机器,下去时,下线机器,实现服务器的高效利用
分析
可以通过判断在zookeeper中是否存在相应的文件来判断服务器是否下线
实现
- 1.在zookeeper句群上创建/servers节点
create /servers "servers"
- 2.服务器端代码
DistributeServer :
public class DistributeServer {
private static String connectString = "hadoop102:2181,hadoop103:2181,hadoop104:2181";
private static int sessionTimeout = 2000;
private ZooKeeper zk = null;
private String parentNode = "/servers";
// 创建到zk的客户端连接
public void getConnect() throws IOException{
zk = new ZooKeeper(connectString, sessionTimeout, new Watcher() {
@Override
public void process(WatchedEvent event) {
// 收到事件通知后的回调函数(用户的业务逻辑)
System.out.println(event.getType() + "--" + event.getPath());
// 再次启动监听
try