zookeeper 监听存活节点
应用场景,公司服务器不想做负载均衡,但又担心单点故障的情况发生,于是将服务器资源注册到zookeeper中,客户端从zookeeper中动态获取服务器资源,然后通过资源进行访问,可以注册多个服务器资源到zookeeper,客户端监听zookeeper中的服务资源,当服务端有故障,比如服务当机,则zookeeper中的资源因为长连接断开而自动移除资源,同时客户端的资源会自动重载过滤,达到自动选择存活节点的目的。
注意事项:
1:创建节点时,需要创建临时节点ephemeral,session失效时间要按需求设置,session失效时间默认为30秒。
2:创建节点时,先删除此节点。
实现代码如下:
public interface ZkConfig {
/**
* 配置平台根节点名称
*/
static String root = "/server_node";
/**
* 初始化配置
*/
void init();
/**
* 重新加载配置资源
*/
void reload();
/**
* 添加配置
* @param key
* @param value
*/
void add(String key, String value);
/**
* 更新配置
* @param key
* @param value
*/
void update(String key, String value);
/**
* 删除配置
* @param key
*/
void delete(String key);
/**
* 获取配置
* @param key
* @return
*/
String get(String key);
/**
* 获取所有的配置内容
* @return
*/
Map<String, String> getAll();
}
监听实现
public class ZkWatcher {
private ZkCli