zoukankan      html  css  js  c++  java
  • ZooKeeper

    1. ZooKeeper 是啥?

    分布式数据一致性解决方案. 实现了 数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、分布式锁和分布式队列这些功能.
    本质上是个分布式数据库或者说分布式文件系统. znode类似树状的文件系统.

    底层其实只有两个功能, 管理(存储、读取)用户程序提交的数据;为用户程序提交数据节点监听服务。

    分布式, 集群 所以高可用;
    数据直接在内存中, 所以高吞吐量和低延迟;
    “读”多于“写”所以高性能(因为写会同步);
    临时节点客户端生命周期有效,持久节点一直有效,所以灵活.

    连接

    基于Session的Tcp连接, 会话(Session)

    数据节点一ZNode

    树形结构.
    Node有Stat属性,存储了version(当前ZNode的版本), cversion(当前ZNode子节点的版本),aversion(当前ZNode的 ACL 版本, 访问权限列表)

    Node的权限借鉴linux, 创建Create,读Read,写Write,删除Delete,管理权限Admin

    Zab 协议(Zookeeper Atomic Broadcast)来保持数据的一致性

    奇数个集群的原因:因为Zab要求大于1/2的节点正常才算正常, 所以 2(n+1) 和2n+1 都要保证n+1个正常, 2(n+1)比2n+1 多的一个节点没有意义

    ZookeeperClient api

    public interface ZookeeperClient {
        //创建,ephemeral 短暂的
        void create(String path, boolean ephemeral);
        void delete(String path); 
        List<String> getChildren(String path);
        List<String> addChildListener(String path, ChildListener listener);
        //增加数据监听,所有的子节点都会被监听
        void addDataListener(String path, DataListener listener);
        //增加数据监听,所有的子节点都会被监听
        void addDataListener(String path, DataListener listener, Executor executor);
        void removeDataListener(String path, DataListener listener);
        void removeChildListener(String path, ChildListener listener);
        void addStateListener(StateListener listener); //连接状态
        void removeStateListener(StateListener listener);
        boolean isConnected();
    
        void close();
        URL getUrl();
        void create(String path, String content, boolean ephemeral);
        String getContent(String path);
        boolean checkExists(String path);
    }
    

    mac docker安装记录

    docker search zookeeper
    docker pull  zookeeper
    docker run -d 
    -p 2181:2181 
    -v /Users/zhengzihui/third/web/zoomkeeper/:/data/ 
    --name=zookeeper  
    --privileged zookeeper
    
  • 相关阅读:
    SDUT-3376_数据结构实验之查找四:二分查找
    SDUT-3375_数据结构实验之查找三:树的种类统计
    SDUT-3373_数据结构实验之查找一:二叉排序树
    深度优先遍历和广度优先遍历
    SDUT-2498_AOE网上的关键路径
    SDUT-2140_判断给定图是否存在合法拓扑序列
    SDUT-2144_最小生成树
    SDUT-3364_欧拉回路
    SDUT-3363_驴友计划
    Java练习 SDUT-2271_Eddy的难题
  • 原文地址:https://www.cnblogs.com/WillingCPP/p/14596737.html
Copyright © 2011-2022 走看看