美文网首页
Zookeeper应用

Zookeeper应用

作者: 剑道_7ffc | 来源:发表于2020-05-01 10:44 被阅读0次

名词复盘

集群角色

image.png

数据模型

树形结构,由节点组成,叶子结点由key-value组成,容器节点由key-value和子节点组成。

会话

image.png

Stat 状态信息

image.png

版本-保证分布式数据原子性

image.png

Watcher

通过发布-订阅来实现watcher机制。

Zookeeper 基于 Java 访问

连接报错

错误信息: KeeperErrorCode=ConnectionLoss
原因:阿里云的服务器的防火墙把2181给拦截的,把2181的端口暴露出来就可以了


image.png

依赖 jar 包

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

建立连接

CuratorFramework curatorFramework=CuratorFrameworkFactory.builder().
                connectString(CONNECTION_STR).sessionTimeoutMs(2000).
                namespace("data").retryPolicy(new ExponentialBackoffRetry(1000,3)).build();
curatorFramework.start();
重试策略

ExponentialBackoffRetry:重试指定的次数, 且每一次重试之间停顿的时间逐渐增加. RetryNTimes:指定最大重试次数的重试策略
RetryOneTime:仅重试一次
RetryUntilElapsed:一直重试直到达到规定的时间

namespace

下面的所有操作都是在该会话的命名空间下

增删改查

新增
private static void createData(CuratorFramework curatorFramework) throws Exception {        
  curatorFramework.create().creatingParentsIfNeeded().withMode(CreateMode.PERSISTENT).forPath("/program","test".getBytes());
    }
修改
    private static void updateData(CuratorFramework curatorFramework) throws Exception {
        curatorFramework.setData().forPath("/program","up".getBytes());
    }
查询
    private static void getData(CuratorFramework curatorFramework) throws Exception{
        Stat stat=new Stat();
        String value = new String(curatorFramework.getData().storingStatIn(stat).forPath("/program"));
        System.out.println(value);
    }
删除
    private static void deleteData(CuratorFramework curatorFramework) throws Exception {
        Stat stat=new Stat();
        curatorFramework.getData().storingStatIn(stat).forPath("/program");
      curatorFramework.delete().withVersion(stat.getVersion()).forPath("/program");
    }

节点权限设置

权限模式

IP:通过ip地址进行权限控制

Id ipId1 = new Id("ip", "192.168.190.1");

Digest(摘要):最常用的控制模式,类似于 username:password ;设 置 的 时 候 需 要DigestAuthenticationProvider.generateDigest() SHA- 加 密和 base64 编码

new Id("digest", DigestAuthenticationProvider.generateDigest("admin:admin"))

World:对所有用户开放,world:anyone

Id ANYONE_ID_UNSAFE = new Id("world", "anyone");

Super:超级用户,可以对节点做任何操作

代码示例
        List<ACL> list=new ArrayList<>();
        ACL acl=new ACL(ZooDefs.Perms.READ | ZooDefs.Perms.WRITE,
                new Id("digest", DigestAuthenticationProvider.generateDigest("admin:admin")));
        list.add(acl);
     curatorFramework.create().withMode(CreateMode.PERSISTENT).withACL(list).forPath("/auth");

节点事件监听

对节点进行watch监听

Curator

PathChildCache:监听孩子节点的创建,更新和删除
NodeCache:监听当前节点的创建,更新和删除
TreeCache:PathChildCache+NodeCache

    private static void addListenerWithNode(CuratorFramework curatorFramework) throws Exception {
        NodeCache nodeCache=new NodeCache(curatorFramework,"/watch",false);
        NodeCacheListener nodeCacheListener= () -> {
            System.out.println("receive Node Changed");
            System.out.println(nodeCache.getCurrentData().getPath()+"---"+new String(nodeCache.getCurrentData().getData()));
        };
        nodeCache.getListenable().addListener(nodeCacheListener);
        nodeCache.start();
    }

相关文章

  • Zookeeper学习-05 Zookeeper总体架构

    1、Zookeeper总体架构 应用使用Zookeeper客户端库使用Zookeeper服务。Zookeeper客...

  • ZooKeeper概述

    原文地址ZooKeeper Overview ZooKeeper ZooKeeper: 分布式应用中的协调服务设计...

  • 【三】Zookeeper应用-基于ZooKeeper的分布式Se

    【Zookeeper应用】 基于ZooKeeper的分布式Session实现 1 为什么使用ZooKeeper 目...

  • 【一】Zookeeper安装、使用-【转】

    0 系列目录 Zookeeper系列 【Zookeeper系列一】Zookeeper应用介绍与安装部署 【Zook...

  • Zookeeper应用

    Zookeeper 1. Zookeeper概念简介: Zookeeper是一个分布式协调服务;就是为用户的分布式...

  • zookeeper应用

    分布式锁 思路:首先创建一个锁节点,需要获得锁的机器在锁节点下创建顺序临时节点,序号1的节点获得锁,获得锁的机器删...

  • Zookeeper应用

    名词复盘 集群角色 数据模型 树形结构,由节点组成,叶子结点由key-value组成,容器节点由key-value...

  • Zookeeper 操作练习

    ZooKeeper API的基础知识 与ZooKeeper集合进行交互的应用程序称为 ZooKeeper客户端或简...

  • ZooKeeper简介

    ZooKeeper简介 ZooKeeper:分布式应用的协调服务 ZooKeeper是一个分布式的开源协调服务,用...

  • ZooKeeper应用场景及方案介绍

    本文主要从应用的角度对ZooKeeper做了浅析,试图阐明ZooKeeper是什么、主要应用场景有哪些、常用场景可...

网友评论

      本文标题:Zookeeper应用

      本文链接:https://www.haomeiwen.com/subject/ceyawhtx.html