《专题四 服务化改造》之《第四章 【拓展进阶】分布式》之《第四节 Zookeeper核心功能和应用场景》、《第五节 分布式锁》

《4.4.1 ZooKeeper入门》

在这里插入图片描述

  • 12 10 zookeeper的应用案例:
    在这里插入图片描述

  • 13 15 zk的同类产品:
    consul etcd(比zk轻量级) Doozer

  • 18分 单机版安装参考以及相关官方文档查阅处:
    在这里插入图片描述
    启动服务端:bin/zkServer.sh start
    用客户端连接:bin/zkCli.sh -server 127.0.0.1:2181

  • 24 45+ cli操作指南:
    在这里插入图片描述

  • 30 57+ Java api

  • 36 35 第三方客户端:zkClient, Curator

《4.4.2 ZooKeeper核心概念》

  • session:
    在这里插入图片描述

  • 数据模型:
    在这里插入图片描述

    • 6 5+ znode命名规范
    • 8分 znode节点类型:
      在这里插入图片描述
    • 14 5 znode数据构成:
      在这里插入图片描述
    • 23 40 acl
    • 27 50 zookeeper中的时间:
      在这里插入图片描述
  • 32 55+ watch监听机制
    在这里插入图片描述
    在这里插入图片描述

    • 51 25 ZkClient中的订阅方法,可以持续监听

56 35+ zk的特性:
在这里插入图片描述

《4.4.3 ZooKeeper典型应用场景》

  • 16分 命名服务:
    在这里插入图片描述

  • 16 50 master选举:
    在这里插入图片描述
    方法1:争抢创建临时节点master,只一个成功,所有的都watch
    方法2:最小节点方式:由servers节点的临时顺序子节点的顺序决定

  • 30 42+ 分布式队列:
    在这里插入图片描述

  • 34 55+ 分布式锁:
    在这里插入图片描述
    在这里插入图片描述

《4.4.4 ZooKeeper集群》

  1. conf/zoo1.cfg如下。zoo2.cfg,zoo3.cfg类似
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/var/lib/zk1
clientPort=2181
server.1=localhost:2881:3881
server.2=localhost:2882:3882
server.3=localhost:2883:3883
  1. /var/lib/zk1下创建myid文件,内容为1。2与3类似。如果zk文件是用zk用户创建的,而此文件夹属于root,则还应进行一系列改用户和权限的操作:
    sudo chown -R zk:zk /var/lib/zk1
    chmod -R 775 /var/lib/zk1

  2. 逐个启动:java -cp zookeeper-3.4.10.jar:lib/*:conf org.apache.zookeeper.server.quorum.QuorumPeerMain conf/zoo1.cfg

  • 22 43 监控命令

  • 26分+ ZAB协议:
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    zk进行leader选举时不可用

《4.4.5 详解分布式一致性协议》

  • 回滚需要undo日志,提交需要redo日志

  • 15分 两阶段提交(2PC)如下图。我:从协议的步骤看,2PC类似于ZAB协议,其中的协调者类似于ZAB协议中的leader,不是的是ZAB要求半数以上,而2PC要求全部,最根本的不同是2PC是一致性算法,ZAB应该如后文的Paxos,是共识算法。
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

  • 30 40+ 3PC :
    在这里插入图片描述
    3PC应用的难点在于超时时长的设置,市面上很少有3PC的应用

  • 46分+ Paxos。维基百科:需要注意的是,Paxos常被误称为“一致性算法”。但是“一致性(consistency)”和“共识(consensus)”并不是同一个概念。Paxos是一个共识(consensus)算法。

leader的问题在于leader负载高,如果leader单点故障,整个集群不可用,需要通过重新选举leader来恢复可用。
在这里插入图片描述

  • 100 45 ZAB,Raft均脱胎于Paxos

《4.5.2 zookeeper分布式锁实现》

  • 23 7 为什么Reentrantlock没有惊群效应,因为AQS,只有排队中等得最久的线程,与此时新申请锁的线程来竞争(非公平锁)。所以利用zk实现分布式锁的第二种方式,即利用临时顺序节点,其实是利用了类似的思路:队列。

猜你喜欢

转载自blog.csdn.net/qq_23204557/article/details/112758463