首页 > 其他 > 详细

工作中的zookeeper

时间:2015-04-30 16:22:33      阅读:216      评论: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
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!