首页新闻招聘找找看知识库
  • 回复:22 浏览:140 2019-11-16 17:10 来自 cn2019

    CAP   
    *************************
    可用      容错        强一致


    响应S   网络故障    加锁

    注:强一致/最终一致
    *************************


    3阶提交
    ***************************
     1请求(响应/撤消)

             2预提(响应/撤消)

                               3终提

    ***************************

  • cn2019
    2019-11-16 17:12 cn2019
    PAX OS
    ***************************
    活锁: 同路相向=》《=
    解锁:不同时

    弱:锁、不顺
    ***************************

    点击查看大图
    点击查看大图
    第1楼 回到顶楼
  • cn2019
    2019-11-16 17:14 cn2019
    ZAB 半数原则 顺序
    ***************************
    Leader主
    follower从-->follower从协


    Zxid:纪元-事务 poach-xid
    注:xid递增,poach-leader



    恢复:故障后,重新leader算法
    ____________________________________________________________________
    广播:主写 从读
    点击查看大图

    leader算法
    点击查看大图
    ______________________________________________________________________
    第2楼 回到顶楼
  • cn2019
    2019-11-17 03:31 cn2019
    cp -r zookeeper01/ zkcluser
    cp -r zookeeper02/ zkcluser
    cp -r zookeeper03/ zkcluser
    第3楼 回到顶楼
  • cn2019
    2019-11-17 12:09 cn2019
    ##创建myid##############
    创建myid
    cd zookeeper01/data
    touch myid
    输入1
    创建myid
    cd zookeeper03/data
    touch myid
    输入2
    创建myid
    cd zookeeper03/data
    touch myid
    输入3


    ##zoo.cfg配置##############
    cd zookeeper01/conf
    cd zookeeper02/conf
    cd zookeeper03/conf
    vi zoo.cfg 新增如下内容
    server.1=localhost:29001:31001
    server.2=localhost:29002:31002
    server.3=localhost:29003:31003

    ##server.myid=IP:Port1:Port2
    ##myid服务器编号
    ##port1服务器与集群中的Leader服务器交换信息的端口,一般用2288,
    ##Port2万一集群中的Leader服务器宕机需要一个端口重新宣讲,选新Leader,一般3388
    第4楼 回到顶楼
  • cn2019
    2019-11-17 12:13 cn2019
    vi zookeeper01/conf/zoo.cfg
    clientPort=28001
    server.1=localhost:29001:31001
    server.2=localhost:29002:31002
    server.3=localhost:29003:31003

    vi zookeeper02/conf/zoo.cfg
    clientPort=28002
    server.1=localhost:29001:31001
    server.2=localhost:29002:31002
    server.3=localhost:29003:31003

    vi zookeeper03/conf/zoo.cfg
    clientPort=28003
    server.1=localhost:29001:31001
    server.2=localhost:29002:31002
    server.3=localhost:29003:31003
    第5楼 回到顶楼
  • cn2019
    2019-11-17 12:56 cn2019
    zookeeper02:leader
    点击查看大图

    zookeeper01:follwer
    点击查看大图

    zookeeper03:follwer
    点击查看大图


    第6楼 回到顶楼
  • cn2019
    2019-11-17 13:55 cn2019
    6)、客户端zkCli.sh
    cd /usr/local/zookeeper03/bin
    ./zkCli.sh -server localhost:2181
    第7楼 回到顶楼
  • cn2019
    2019-11-17 22:44 cn2019
    数构 树
    ***************************
    类型Znode

    持久目节点/持久编码目节点
    临时目节点/临时编码目节点
    注:ZK断后自动清


    ls /

    ls2/

    create /zookeeper/itheima itheimavalue
    get /zookeeper/itheima
    set /zookeeper/itheima itheimavalue
    stat /zookeeper/itheima
    delete /zookeeper/itheima

    create /zookeeper/itheima itheimavalue
    create /zookeeper/itheima/it01 it01value

    delete /zookeeper/itheima
    rmr /zookeeper/itheima

    create /zookeeper/itheima itheimavalue
    ls /zookeeper/itheima watch
    create /zookeeper/itheima/it01 it01value
    #########ls watch path提示一次#####################
    get /zookeeper/itheima watch
    set /zookeeper/itheima itheimaupdate
    #########get watch path提示一次#####################
    第8楼 回到顶楼
  • cn2019
    2019-11-18 14:36 cn2019
    ZooKeeper 集群通常设计部署成奇数台服务器即可。
    第9楼 回到顶楼
  • cn2019
    2019-12-01 21:40 cn2019
    6-7 zk容器生成镜像
    #docker commit 容器ID zk:1.0
    docker commit zk zk:1.0


    6-8 新容器zk2
    ##端口映射 宿主机:容器
    ######### 2181:28002
    docker run -it --name zk2 -p 2181:28002 zk:1.0
    docker exec -ti -u root zk2 bash
    第10楼 回到顶楼
  • cn2019
    2019-12-08 19:41 cn2019
    第11楼 回到顶楼
  • cn2019
    2019-12-08 19:42 cn2019
    package com.itheima.zkDemo;

    import org.apache.zookeeper.*;
    import org.apache.zookeeper.data.Stat;
    import org.junit.jupiter.api.Test;

    import java.io.IOException;
    import java.util.List;

    public class ZkApiTest {
    @Test
    public void test() throws IOException, KeeperException, InterruptedException {

    // 1、创建zookeeper连接
    ZooKeeper zooKeeper=new ZooKeeper("192.168.157.128:2181", 2000, new Watcher() {
    public void process(WatchedEvent watchedEvent) {
    System.out.println("触发了"+watchedEvent.getType()+"的事件");
    }
    });

    // 2、创建父节点
    //String path=zooKeeper.create("/itheima","itheimaValue".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    //System.out.println(path);
    // 3、创建子节点
    //String childrenpath=zooKeeper.create("/itheima/children","childrenValue".getBytes(), ZooDefs.Ids.OPEN_ACL_UNSAFE, CreateMode.PERSISTENT);
    // System.out.println(childrenpath);
    // 4、获取节点中的值(父节点和子节点)
    // byte[] data=zooKeeper.getData("/itheima",false,null);
    //System.out.println(new String(data));
    // List<String> children=zooKeeper.getChildren("/itheima",false);
    // for(String child:children)
    // {
    // System.out.println(child);
    // }
    // 5、修改节点的值
    //Stat stat=zooKeeper.setData("/itheima","itheimaUpdate".getBytes(),-1);
    // System.out.println(stat);
    // 6、判断某个节点是否存在
    //Stat exists=zooKeeper.exists("/itheima/children",false);
    //System.out.println(exists);
    // 7、删除节点
    zooKeeper.delete("/itheima/children",-1);
    }

    }
    第12楼 回到顶楼
  • cn2019
    2019-12-10 21:11 cn2019
    源码 https://github.com/apache/zookeeper

    导入源码=》导入项目,选中pom.xml,选下一步..........等待全部导入


    点击查看大图


    第13楼 回到顶楼
  • cn2019
    2019-12-18 23:23 cn2019
    ################选举################
    org.apache.zookeeper.server.quorum.quorumPeer.start()



    场景
    1)、配置中心 ZK节点,节点数据变更Watach(节点客户广播)
    2)、负载均衡 监听--》服务器列表、均衡算法
    3)、命名 集群机器、服务地址、远程对象
    全局唯一 UUID

    4)、集群管理 监控:状态收集
    控制:操作控制

    实现=》Watcher、临点

    例=》机器上下线检测:子点创建=》ZK/Machines接收‘子节点变更’上线通知
    新节点开启‘后台管理’逻辑
    监控=》运行状态
    机器监控:主机写入各节点、节点数变
    第14楼 回到顶楼
  • cn2019
    2019-12-24 05:38 cn2019
    单机


    //上锁
    lock.lock();
    //调用减少库存的方法
    boolean b=new Stock().reduceStock();
    //解锁
    lock.unlock();
    第15楼 回到顶楼
  • cn2019
    2019-12-30 22:30 cn2019
    //上锁
    lock.lock();
    //调用减少库存的方法
    boolean b=new Stock().reduceStock();
    //解锁
    lock.unlock();
    第16楼 回到顶楼
  • cn2019
    2020-01-04 03:01 cn2019
    多机锁
    锁对象非同
    锁:
    数库锁=》dblock(id主键,lock_name唯一)

    机1:dblock.lock(insert lock_name:db_lock_stock)
    机2:dblock.lock(insert lock_name:db_lock_stock.....循环等待)
    机1:dblock.unlock(delete lock_name:db_lock_stock)
    机2:dblock.lock(insert lock_name:db_lock_stock)

    redis锁=》key/value lock_name/redis_lock_stock

    机1:dblock.lock(insert lock_name:redis_lock_stock,expire,TimeUnit.SECONDS)
    机2:dblock.lock(insert lock_name:redis_lock_stock.....循环等待)
    机1:dblock.unlock(delete lock_name:redis_lock_stock,expire,TimeUnit.SECONDS)
    机2:dblock.lock(insert lock_name:redis_lock_stock)

    setnx name z3 #设KEY:name
    keys * #查看
    del name #删除KEY:name
    expire name 15 #设KEY:name 15s 过期
    ttl name #查看KEY:name 过期

    lock_demo_redisLock
    第17楼 回到顶楼
  • cn2019
    2020-01-05 20:05 cn2019
    ZK锁=》序临节点+watch监

    机1:创 序临节点与ALL节点 重排=》序Min:获锁;
    非序Min:监前一节点,前一点删获锁.....依推..


    点击查看大图
    第18楼 回到顶楼
  • cn2019
    2020-01-05 20:07 cn2019
    第19楼 回到顶楼
  • cn2019
    2020-01-06 21:11 cn2019
    队列
    先进先出
    机1:创 序临节点与ALL节点 重排=》序Min:获锁;
    点击查看大图
    非序Min:监前一节点,前一点删获锁.....依推...
    第20楼 回到顶楼
  • cn2020
    2020-02-18 10:25 cn2020
    zookeeper图形化的客户端工具(ZooInspector)
    第21楼 回到顶楼
  • cn2020
    2020-02-18 10:35 cn2020
    第22楼 回到顶楼
登录后才能评论,请先登录注册