zk保证定时任务集群部署时单个节点执行

@Component
public class ZKLeaderLatch {

    private static CuratorFramework zkClient;
    private static LeaderLatch leaderLatch;

    public ZKLeaderLatch(@Value("${zkservers}")String servers, @Value("${masterkey}")String masterkey) {
        String connectString = servers;
        String masterKey = masterkey;
        try {
            final String zkid = String.format("zkLatchClient#%s", InetAddress.getLocalHost().getHostAddress());
            CommonLogger.printInfo(this,"zk "+zkid+" client init... server:"+connectString+", masterKey:"+masterKey+"");
            RetryPolicy retryPolicy = new ExponentialBackoffRetry(1000, 3);
            zkClient = CuratorFrameworkFactory.builder().connectString(connectString)
                    .sessionTimeoutMs(6000).retryPolicy(retryPolicy).build();
            CommonLogger.printInfo(this,"zk client start....");
            zkClient.start();
            leaderLatch = new LeaderLatch(zkClient, masterKey,zkid);
            LeaderLatchListener leaderLatchListener = new LeaderLatchListener() {
                @Override
                public void notLeader() {
                    CommonLogger.printInfo(this,"client "+zkid+" is not main. ");
                }
                @Override
                public void isLeader() {
                    CommonLogger.printInfo(this,"client "+zkid+" is main. YEAH!");
                }
            };
            leaderLatch.addListener(leaderLatchListener);
            CommonLogger.printInfo(this,"leaderLatch start....");

            leaderLatch.start();
        } catch(Exception e) {
            CommonLogger.printInfo(this,"client err. "+e.getMessage(),e);
        }
    }

    public boolean isLeader() {
        return leaderLatch.hasLeadership();
    }

    public CuratorFramework getClient(){
        return zkClient;
    }

    public LeaderLatch getLatch(){
        return leaderLatch;
    }
}
配置依赖
<dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-framework</artifactId>
            <version>4.0.1</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-recipes</artifactId>
            <version>4.1.0</version>
        </dependency>

        <dependency>
            <groupId>org.apache.curator</groupId>
            <artifactId>curator-client</artifactId>
            <version>4.0.1</version>
        </dependency>

        <!-- zookeeper -->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.9</version>
            <exclusions>
                <exclusion>
                    <groupId>org.slf4j</groupId>
                    <artifactId>slf4j-log4j12</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

原文地址:https://www.cnblogs.com/liangmm/p/12024311.html

时间: 2024-10-18 11:59:13

zk保证定时任务集群部署时单个节点执行的相关文章

Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群

Spring+quartz集群配置,Spring定时任务集群,quartz定时任务集群 >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 蕃薯耀 2016年7月7日 09:06:09 星期四 http://fanshuya

Nginx+Tomcat+Memcached 实现集群部署时Session共享

一.简介 我们系统经常要保存用户登录信息,有Cookie和Session机制,Cookie客户端保存用户信息,Session在服务端保存用户信息,如果浏览器不支持Cookie或者用户把Cookie禁掉了,Cookie就用不了,还有不同的浏览器采用不用方式保存Cookie,所以我们采用Session服务端来保存,上一节我们有介绍了Tomcat集群部署,怎么样集群的Tomcat对同个用户请求的都能获取保存在Session的用户信息,采用了Memcached管理Session,Memcached 是一

Kubernetes集群部署之五node节点部署

部署kubelet: 1.二进制包准备 将软件包可执行文件从k8s-master复制到node节点中去. [[email protected] ~]# cd /usr/local/src/kubernetes/server/bin [[email protected]-master bin]# scp kubelet kube-proxy 10.200.3.106:/opt/kubernetes/bin/ [[email protected]-master bin]# scp kubelet k

转 RAC单个节点执行expdp提示ORA-31693 ORA-31617 ORA-19505 ORA-27037错误

http://blog.itpub.net/31394774/viewspace-2217567/ 1.在RAC单节点执行expdp,出现ORA-31693 ORA-31617 ORA-19505 ORA-27037错误 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 [email pro

大厂面试题:集群部署时的分布式 session 如何实现?

面试官心理分析面试官问了你一堆 dubbo 是怎么玩儿的,你会玩儿 dubbo 就可以把单块系统弄成分布式系统,然后分布式之后接踵而来的就是一堆问题,最大的问题就是分布式事务.接口幂等性.分布式锁,还有最后一个就是分布式 session. 当然了,分布式系统中的问题何止这么一点,非常之多,复杂度很高,这里只是说一下常见的几个问题,也是面试的时候常问的几个. 面试题剖析session 是啥?浏览器有个 cookie,在一段时间内这个 cookie 都存在,然后每次发请求过来都带上一个特殊的 jse

CDH集群部署时遇到的问题

CDH:全称Cloudera’s Distribution Including Apache Hadoop CDH版本衍化hadoop是一个开源项目,所以很多公司在这个基础进行商业化,Cloudera对hadoop做了相应的改变. Cloudera公司的发行版,我们将该版本称为CDH(Cloudera Distribution Hadoop).截至目前为止,CDH共有5个版本,其中,前两个已经不再更新,最近的两个,分别是CDH4,在Apache Hadoop 2.0.0版本基础上演化而来的,CD

六、Kubernetes_V1.10集群部署-node-部署节点组件

一.配置kubelet 1.配置启动文件 # cat > /usr/lib/systemd/system/kubelet.service <<EOF [Unit] Description=Kubernetes Kubelet After=docker.service Requires=docker.service [Service] EnvironmentFile=-/etc/kubernetes/kubelet ExecStart=/usr/bin/kubelet \$KUBELET_

Tomcat部署问题,Tomcat集群部署问题。

1.服务器崩溃,指的是Tomcat程序崩溃,还是服务器系统崩溃? 答:都有可能. 所以一台服务器上部署多个Tomcat可以防止程序崩溃问题.但不能避免服务器崩溃,要避免服务器崩溃,就要采用服务器集群. 2.那么多台Tomcat,也就是集群部署时.那怎么升级程序呢?如果升级了,升级过程中就不能访问网站了啊?怎么解决? 答:可以采取部分升级策略啊,先升级一部分,再升级另一部分. 或者采取夜间升级.比如凌晨4点 3.临时访问量增加时,可以通过添加Tomcat服务器来提高并发量,活动取消时,再撤去一些T

Memcached 集群部署

一.Memcached简介 Memcached 是一个高性能的分布式内存对象缓存系统,Memcached的高性能源于两阶段哈希(two-stage hash)结构,Memcached基于一个存储键/值对的HashMap,减轻数据库负载,它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态.数据库驱动网站的速度.当内存容量达到指定设定的值时,LRU算法自动删除不使用的缓存. 二.Memcached应用的场景 (1)Memcached大部分是应用在作为数据库前端缓存,减少了连接数据库次数