老王讲自制RPC框架.(三.ZOOKEEPER)

(#)定义
Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群
管理、分布式应用配置项的管理

(#)使用
配置zk客户端我就不多说了,这个网上一找一堆,我主要说一下就是,自己玩玩的话,没必要搭建一个集群,用一台基本问题不大,在此假设集群已经搭建完成了
需要引入zk client的jar包

(#)code

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
  private Logger logger = LoggerFactory.getLogger(ServiceRepository.class);
    @Value("${session.timeout}")
    private int SESSION_TIMEOUT;
    @Value("${registry.address}")
    private String CONNECT_STRING;
    @Value("${repository.path}")
    private String RPC_PATH;
    private ZooKeeper zooKeeper = null;
    private CountDownLatch latch = new CountDownLatch(1);
 
 
 
    private void createConnect() {
        releaseConnection();
        try {
            zooKeeper = new ZooKeeper(CONNECT_STRING, SESSION_TIMEOUT,
                    new Watcher() {
                        public void process(WatchedEvent event) {
                            logger.info("receive message :{}" + event.getState());
                            latch.countDown();
                        }
                    });
            latch.await();
        } catch (IOException e) {
            logger.error("create异常信息:{}", e);
        } catch (InterruptedException e) {
            logger.error("create异常信息:{}", e);
        }
        ;
    }
 
    private void releaseConnection() {
        if (zooKeeper != null) {
            try {
                zooKeeper.close();
            } catch (InterruptedException e) {
                logger.error("release异常信息:{}", e);
            }
        }
    }
 
    private boolean createPath(String path, String data) {
        try {
            zooKeeper.create(path, data.getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        } catch (KeeperException e) {
            logger.error("create异常信息:{}", e);
        } catch (InterruptedException e) {
            logger.error("create异常信息:{}", e);
        }
        return true;
    }
 
    public String readData(String path) {
        try {
            return new String(zooKeeper.getData(path, false, null));
        } catch (KeeperException e) {
            logger.error("read异常信息:{}", e);
            return "";
        } catch (InterruptedException e) {
            logger.error("read异常信息:{}", e);
            return "";
        }
    }
 
    public boolean writeData(String path, String data) {
        try {
            zooKeeper.setData(path, data.getBytes(), -1);
        } catch (KeeperException e) {
            logger.error("write异常信息:{}", e);
        } catch (InterruptedException e) {
            logger.error("write异常信息:{}", e);
        }
        return false;
    }
 
    public void deleteNode(String path) {
        try {
            zooKeeper.delete(path, -1);
        } catch (KeeperException e) {
            logger.error("delete异常信息:{}", e);
        } catch (InterruptedException e) {
            logger.error("delete异常信息:{}", e);
        }
    }
}

  

posted @   nasjjsadkef  阅读(345)  评论(0编辑  收藏  举报
努力加载评论中...
点击右上角即可分享
微信分享提示