码迷,mamicode.com
首页 > 其他好文 > 详细

工作中的zookeeper

时间:2015-04-30 16:22:45      阅读:164      评论:0      收藏:0      [点我收藏+]

标签:

1.集群管理

在我们的业务场景中,服务间通信的url是通过zookeeper来管理的。我们服务间,当A和B服务需要建立连接时,服务启动时,首先回去建立和ZK的连接,然后在事先定义好的节点获取url列表,并且注册事件,zk节点发生变化时会通知服务,根据事件类型增加或删除服务间的连接(A会维护一份和B每一台机子的连接map),然后A会采用不同的策略去选择连接进行和B的通信

我们服务的zk节点监控:

技术分享

添加zk变动的事件处理

 final PathChildrenCache pathChildrenCache = new PathChildrenCache(zkClient, servicePath, true);
        pathChildrenCache.getListenable().addListener(new PathChildrenCacheListener() {
            @Override
            public void childEvent(CuratorFramework client, PathChildrenCacheEvent event) throws Exception {
                String path = event.getData().getPath();
                String service = path.replaceAll(servicePath + "/", "");
                synchronized (ZKAutoTcpConnector.this) {
                    switch (event.getType()) {
                        case CHILD_ADDED:
                            openConnection(service);
                            break;
                        case CHILD_REMOVED:
                            TCPConnector connector = connectors.get(service);
                            if (connector != null && !connector.isActive())
                                closeConnection(service);
                    }
                }
            }

2.配置中心

技术分享

配置中心其实原理和集群管理很类似,也是启动时会去先读取固定节点的配置,然后设置监听变动

3.dubbo

dubbo不做多说,它可以通过zk作为配置中心,并且在本地生成缓存

工作中的zookeeper

标签:

原文地址:http://my.oschina.net/zhenglingfei/blog/408601

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!