2020暑假第4周

  这周开始学习Zookeeper。

  一个开源的分布式协调服务框架,主要用来解决分布式集群中应用系统的一致性问题和数据管理问题。

  Zookeeper本质上是一个分布式文件系统,适合存放小文件,也可以理解为一个数据库。Znode是有路径的,也可以携带数据,所以Zookeeper可以对外提供出一个类似于文件系统的视图,可以通过操作文件系统的方法操作Zookeeper,使用路径获取Znode、获取Znode携带的数据、修改Znode携带的数据、删除Znode、添加Znode……

  Zookeeper集群是一个基于主从架构的高可用集群。每个服务器承担一种角色:Leader或Follower或Obsever。

  Zookeeper应用场景:数据发布和订阅、命名服务、分布式协调和通知(心跳检测、工作进度汇报、系统调度)、分布式锁(排它锁即写锁即独占锁、共享锁即读锁)、分布式队列。

  选举机制(Leader选举):服务器启动时:每个sever发出一个投票、接受来自各个服务器的投票、处理投票、统计投票、改变服务器状态。服务器运行时选举Leader。

  Zookeeper环境搭建。

  Zookeeper的数据模型,在结构上和标准文件系统的非常相似,拥有一个层次的命名空间,都是采用树形层次结构。Zookeeper树中的每个节点就是一个znode,并且每个节点可以拥有子节点。Znode存储数据大小有限制、Znode通过路径引用(绝对路径)、一个Znode由stat、data、childen组成。

  Znode有临时节点和永久节点两种,Znode还有一个序列化的特征。故Znode节点共有四种:临时节点、永久节点、临时节点序列化、永久节点序列化。

  登录Zookeeper客户端:# cd /安装目录/.../

                                         # bin/zkCli.sh -server node01:2181

                                         quit  (退出)

  创建永久节点:create /hello

  创建临时节点:create -e /abc 123

  创建永久序列化节点:create -s /zhangsan boy

  创建临时序列化节点:create -e -s /lisi boy

  修改节点数据:set /hello zookeeper

  删除节点,如果要删除的节点有子Znode则无法删除:delete /hello

  删除节点,如果有子Znode则递归删除:rmr /abc

  列出历史记录:histroy

  znode有属性:dataVersion、cversion、aclVersion、cZxid、mZxid、ctime、mtime、ephemeralOwner等。

  Zookeeper的watch机制:通过类似于数据库中的触发器,对某个Znode设置watcher,当Znode发生变化的时候,watermanager会调用对应的watcher。当Znode发生删除、修改、创建、子节点修改的时候,对应的watcher会得到通知。watcher有一次性触发(一个watcher只会被触发一次)和事件封装(得到的事件是被封装过的,包括keeperState、eventType、path)的特点。

  Zookeeper的JavaAPI操作:使用的是一套Zookeeper客户端框架Curator,解决了很多Zookeeper客户端非常底层的细节开发工作。Curator包含了几个包:curator-framework(对Zookeeper的底层api的一些封装)、curator-recipes(封装一些高级特性,如:Cache事件监听、选举、分布式锁、分布式计数器等)。

 

 

 

 

 

 

 

  54                                                                                        default:

  55                                                                                                       break;

  56}

  57}

  58}

  59 });

  60      treeCache.start();

  61      Thread.sleep(l:100000000);

  62 }

posted on 2020-07-25 23:05  FF冯静妃  阅读(78)  评论(0编辑  收藏  举报

导航