• java操作Zookeeper


    Zookeeper

    什么是Zookeeper

    Zookeeper是一个分布式开源框架,提供了协调分布式应用的基本服务,它向外部应用暴露一组通用服务——分布式同步(Distributed Synchronization)、命名服务(Naming Service)、集群维护(Group Maintenance)等,简化分布式应用协调及其管理的难度,提供高性能的分布式服务。ZooKeeper本身可以以单机模式安装运行,不过它的长处在于通过分布式ZooKeeper集群(一个Leader,多个Follower),基于一定的策略来保证ZooKeeper集群的稳定性和可用性,从而实现分布式应用的可靠性。

    1、zookeeper是为别的分布式程序服务的

    2、Zookeeper本身就是一个分布式程序(只要有半数以上节点存活,zk就能正常服务)

    3、Zookeeper所提供的服务涵盖:主从协调、服务器节点动态上下线、统一配置管理、分布式共享锁、统> 一名称服务等

    4、虽然说可以提供各种服务,但是zookeeper在底层其实只提供了两个功能:

    管理(存储,读取)用户程序提交的数据(类似namenode中存放的metadata); 
    并为用户程序提供数据节点监听服务;

    启动单机

    1.Zoolnspector文件

    1. 在里面创建一个data空文件夹
    1. conf里面的zoo....改成zoo.cfg
    1. 右键zoo.cfg以记事本打开,把data文件夹路径放里面
    1. 点击binzkServer.cmdzkCli.cmd输入 ls /回车完成

    Zookeeper说明


    创建节点(znode) 方法:
    create:
    提供了两套创建节点的方法,同步和异步创建节点方式。

    同步方式:
    参数1,节点路径《名称) : InodeName (不允许递归创建节点,也就是说在父节点不存在
    的情况下,不允许创建子节点)
    参数2,节点内容: 要求类型是字节数组(也就是说,不支持序列化方式,如果需要实现序
    列化,可使用java相关序列化框架,如Hessian、Kryo框架)
    参數3,节点权限: 使用Ids.OPEN_ACL_UNSAFE开放权限即可。(这个参数一般在权展
    没有太高要求的场景下,没必要关注)
    参数4,节点类型: 创建节点的类型: CreateMode,提供四种首点象型
    PERSISTENT(持久节点)
    PERSISTENT SEQUENTIAL(持久顺序节点)

    EPHEMERAL(临时节点
    EPHEMERAL SEQUENTAL(临时顺序节点)

    1. 引入依赖

    <dependency>
      <groupId>org.apache.zookeeper</groupId>
      <artifactId>zookeeper</artifactId>
      <version>3.4.6</version>
    </dependency>

    Zookeeper客户端连接

    1. 实现增删改查

    private static final String ZK_ADDRESS="0.0.0.0:2181";
    private static final Integer ZK_TIMEOUT=2000;

    public static void main(String[] args) throws IOException, InterruptedException, KeeperException {
        //连接zookeeper
        //步骤一:创建zookeeper对象
        /*
        参数一:代表连接地址
         */
        ZooKeeper zooKeeper=new ZooKeeper(ZK_ADDRESS, ZK_TIMEOUT, new Watcher() {
            //连接方法
            @Override
            public void process(WatchedEvent watchedEvent) {
                System.out.println("成功建立连接!");
            }
        });
        //创建节点
        String result=zooKeeper.create("/zk01","zkvalue01".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
        System.out.println("创建成功:"+result);
       /* //更改节点
        Stat stat = zooKeeper.setData("/zk01", "zkvalueset01".getBytes(), 0);
        System.out.println("更改成功"+stat);*/
        /*//获取节点
        byte[] value = zooKeeper.getData("/zk01",false,new Stat());
        System.out.println(new String(value,"UTF-8"));*/
        /*//删除
        zooKeeper.delete("/zk01",-1);*/
        //关闭连接
        zooKeeper.close();
    }

  • 相关阅读:
    动态获取Resources里面的图片列表
    在LINQ中实现多条件联合主键LEFT JOIN
    Failed to fetch URL http://dlssl.google.com/android/repository/repository.xml
    LINQ多条件OR模糊查询
    使用ILMerge将所有引用的DLL和exe文件打成一个exe文件
    安卓模拟器、电脑运行安卓系统android、apk文件
    C/C++中枚举类型(enum)
    指针详解
    Visaul Studio 2008 中配置DirectX9c的开发环境
    出自涅磐,缘自凤凰
  • 原文地址:https://www.cnblogs.com/mayuan01/p/11929517.html
Copyright © 2020-2023  润新知