zoukankan      html  css  js  c++  java
  • zookeeper笔记

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


    响应S   网络故障   加锁

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

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

           预提(响应/撤消)

                           终提

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


    PAX OS
    ***************************
    活锁:   同路相向=》《=
             解锁:不同时

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


    ZAB  半数原则
    ***************************
    Leader主
    follower从-->follower从协


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



    恢复:故障后,重新leader算法

    广播:主写 从读
          leader算法

    ******************************************************
    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



    数构  树
    ***************************
    类型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提示一次#####################

    源码  https://github.com/apache/zookeeper

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

    ################选举################
    org.apache.zookeeper.server.quorum.quorumPeer.start()



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

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

               实现=》Watcher、临点

                   例=》机器上下线检测:子点创建=》ZK/Machines接收‘子节点变更’上线通知
                                    新节点开启‘后台管理’逻辑
                            监控=》运行状态
                    机器监控:主机写入各节点、节点数变


    1)单机锁

                 //上锁
                lock.lock();
                //调用减少库存的方法
                boolean b=new Stock().reduceStock();
                //解锁
                lock.unlock();

    2)多机锁
               锁对象非同
                   锁:
                     a)、数库锁=》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)

                                lock_demo_DBLOCK.zip

                    b)、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,expire,TimeUnit.SECONDS.....循环等待)
                                机1:dblock.unlock(delete lock_name:redis_lock_stock)
                                   机2:dblock.lock(insert lock_name:redis_lock_stock,expire,TimeUnit.SECONDS)

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

                      注:因主挂导致同锁多户=》redisson

     lock_demo_redisLock

                     



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

    lock_demo_ZkLock.zip

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

  • 相关阅读:
    html页面自适应宽度
    Angularjs Select获取数组下标
    spring boot集成mybatis分页插件
    百度分享实现https
    nginx自定义错误页面
    nginx代理tomcat
    Nginx配置SSL证书
    Nginx安装
    xmlns:amq="http://activemq.apache.org/schema/core"报错
    ActiveMQ
  • 原文地址:https://www.cnblogs.com/smallfa/p/12019242.html
Copyright © 2011-2022 走看看