zoukankan      html  css  js  c++  java
  • 五、curator recipes之选举主节点Leader Latch

    简介

    在分布式计算中,主节点选举是为了把某个进程作为主节点来控制其它节点的过程。在选举结束之前,我们不知道哪个节点会成为主节点。curator对于主节点选举有两种实现方式,本文示例演示Latch的实现示例。

    官方文档:http://curator.apache.org/curator-recipes/leader-latch.html

    javaDoc:http://curator.apache.org/apidocs/org/apache/curator/framework/recipes/leader/LeaderLatch.html

    代码示例

    zookeeper的选举是通过争抢最小节点来实现的,这里添加了争抢结果的监听,如果当前节点编程主节点则触发isLeader,如果当前节点从主节点变成非主节点则触发notLeader

    import org.apache.curator.framework.CuratorFramework;
    import org.apache.curator.framework.CuratorFrameworkFactory;
    import org.apache.curator.framework.recipes.leader.LeaderLatch;
    import org.apache.curator.framework.recipes.leader.LeaderLatchListener;
    import org.apache.curator.retry.ExponentialBackoffRetry;
    
    public class LatchDemo {
        private static CuratorFramework client  = CuratorFrameworkFactory.newClient("localhost:2181", new ExponentialBackoffRetry(3000, 3));
        private static String           path    = "/master";
        private static String           id = "0001";
    
        public static void main(String[] args) throws Exception {
            // curator客户端启动
            client.start();
            // 创建选举实例
            LeaderLatch latch = new LeaderLatch(client, path, id);
            // 添加选举监听
            latch.addListener(new LeaderLatchListener() {
                @Override
                public void isLeader() {
                    // 如果成为master则触发
                    System.out.println("is leader");
                }
    
                @Override
                public void notLeader() {
                    // 如果从主节点变成非主节点则触发
                    System.out.println("not leader");
                }
            });
            // 加入选举
            latch.start();
            // curator客户端关闭
            client.close();
        }
    }

    主节点选举出了Curator客户端需要star以外,latch也需要start,当然latch也会配对着一个close。start意味着参加选举,close意味着退出选举。

  • 相关阅读:
    7.29 H5学习笔记
    8.1H5学习笔记
    8.4 H5知识点总结
    8.15 CSS知识点6
    8.12 CSS知识点5
    HTTP协议简析(二)
    php实现二分查找法
    http协议简析(一)
    telnet客户端模拟浏览器发送请求
    导入txt文件到SQL SERVER 2008
  • 原文地址:https://www.cnblogs.com/lay2017/p/10264300.html
Copyright © 2011-2022 走看看