zookeeper持有者类

 1 import org.apache.curator.RetryPolicy;
 2 import org.apache.curator.framework.CuratorFramework;
 3 import org.apache.curator.framework.CuratorFrameworkFactory;
 4 import org.apache.curator.framework.imps.CuratorFrameworkState;
 5 import org.apache.curator.retry.ExponentialBackoffRetry;
 6 import org.slf4j.Logger;
 7 import org.slf4j.LoggerFactory;
 8
 9 import java.io.Closeable;
10 import java.io.IOException;
11
12 /**
13  * zookeeper连接持有者
14  *
15  * @author
16  * @version V1.0
17  * @modify by user: $author$ $date$
18  * @modify by reason:{方法名}:{原因}
19  */
20 public class ZookeeperHolder implements Closeable {
21     // /日志
22     private static final Logger LOG = LoggerFactory.getLogger(ZookeeperHolder.class);
23     // zk超时时间
24     private static final int SESSION_TIME = 30 * 1000;
25     //出错尝试次数
26     private static final int RETRY_TIMES = 3;
27     private CuratorFramework client;
28     private String zkUrl = null;
29
30     public ZookeeperHolder(String zkUrl) {
31         this.zkUrl = zkUrl;
32         client = initClient(zkUrl);
33     }
34
35     public CuratorFramework getClient() {
36         if (client == null) {
37             client = initClient(zkUrl);
38         }else if (!client.getState().equals(CuratorFrameworkState.STARTED)) {
39             client.start();
40         }
41         return client;
42     }
43
44     /**
45      * 初始化客户端
46      *
47      * @param zkUrl
48      * @return
49      */
50     private CuratorFramework initClient(String zkUrl) {
51         LOG.info("初始化Zookeeper连接...");
52         try {
53             RetryPolicy retryPolicy = new ExponentialBackoffRetry(SESSION_TIME, RETRY_TIMES);
54             CuratorFramework client = CuratorFrameworkFactory.newClient(zkUrl, retryPolicy);
55             client.start();
56             return client;
57         } catch (Throwable e) {
58             LOG.error("Init zk client error with url [{}]", zkUrl, e);
59             throw e;
60         }
61     }
62
63     @Override
64     protected void finalize() throws Throwable {
65         if (client != null) {
66             client.close();
67         }
68         super.finalize();
69     }
70
71     @Override
72     public void close() throws IOException {
73         if (client != null) {
74             client.close();
75         }
76     }
77 }
时间: 2024-11-12 13:55:18

zookeeper持有者类的相关文章

Zookeeper操作工具类

package com.carelink.rpc.registry.client.util; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.List; import java.util.Map; import java.util.concurrent.ExecutorService; import java.util.concurrent.Executors; import

elasticsearch持有者类

import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import org.apache.commons.lang3.StringUtils; import org.elasticsearch.action.bulk.BulkItemResponse; import org.elasticsearch.action.bulk.Bu

zookeeper - 客户端源码分析

zookeeper客户端的主类入口是Zookeeper类,负责与zookeeper server端的通信以及触发watcher等. 下文主要分析zookeeper客户端的工作流程. 1 zookeeper构造函数 主要分两类,一是不带sessionid的,这是客户端第一次连接server时采用 public ZooKeeper(String connectString, int sessionTimeout, Watcher watcher, boolean canBeReadOnly) thr

【Zookeeper是什么】

转自:真名:余昭辉 网名:横刀天笑 Google的三篇论文影响了很多很多人,也影响了很多很多系统.这三篇论文一直是分布式领域传阅的经典.根据MapReduce,于是我们有了 Hadoop:根据GFS,于是我们有了HDFS:根据BigTable,于是我们有了HBase.而在这三篇论文里都提及Google的一个lock service---Chubby,哦,于是我们有了Zookeeper. 随着大数据的火热,Hxx们已经变得耳熟能详,现在作为一个开发人员如果都不知道这几个名词出门都好像不好意思跟人打

Zookeeper 扫盲

Zookeeper 扫盲 :disappointed_relieved: 配置文件详解: tickTime:基本事件单元,以毫秒为单位,这个时间作为 Zookeeper 服务器之间或客户端之间维持心跳的时间间隔 dataDir:存储内存中数据库快照的位置,顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper 将写数据的日志文件也保存到这个目录里 clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户

zookeeper 大量连接断开重连原因排查

问题现象 最后发现线上的zookeeper的日志zookeeper.out 文件居然有6G,后来设置下日志为滚动输出,参考: http://blog.csdn.net/hengyunabc/article/details/19006911 但是改了之后,发现一天的日志量就是100多M,滚动日志一天就被冲掉了,这个不科学. 再仔细查看下日志里的内容,发现有很多连接建立好,马上又断开: 2014-11-24 15:38:33,348 [myid:3] - INFO [NIOServerCxn.Fac

ZooKeeper学习第四期---构建ZooKeeper应用

转:http://www.cnblogs.com/sunddenly/p/4064992.html 一.配置服务 配置服务是分布式应用所需要的基本服务之一,它使集群中的机器可以共享配置信息中那些公共的部分.简单地说,ZooKeeper可以作为一个具有高可用性的配置存储器,允许分布式应用的参与者检索和更新配置文件.使用ZooKeeper中的观察机制,可以建立一个活跃的配置服务,使那些感兴趣的客户端能够获得配置信息修改的通知. 下面来编写一个这样的服务.我们通过两个假设来简化所需实现的服务(稍加修改

zookeeper分布式锁的实现

本文主要讲述在使用ZooKeeper进行分布式锁的实现过程中,如何有效的避免"羊群效应(herdeffect)"的出现. 最后有实现了代码,仅供参考 本文参考了<Hadoop权威指南>以及以下网页内容实现: http://aliapp.blog.51cto.com/8192229/1328018 实现过程介绍如下: 一般的分布式锁实现 这里简单的讲下一般的分布式锁如何实现.具体的代码实现可以在这里看到:https://svn.apache.org/repos/asf/zoo

分布式设计与开发(三)------高一致性服务ZooKeeper

分布式环境中大多数服务是允许部分失败,也允许数据不一致,但有些最基础的服务是需要高可靠性,高一致性的,这些服务是其他分布式服务运转的基础,比如naming service.分布式lock等,这些分布式的基础服务有以下要求: 高可用性 高一致性 高性能 对于这种有些挑战CAP原则 的服务该如何设计,是一个挑战,也是一个不错的研究课题,Apache的ZooKeeper也许给了我们一个不错的答案.ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务, 它暴露了一个简单的原语集,分布式应用