Zookeeper:

是分布式协调服务的开源框架,用来解决分布式集群中应用系统的一致性问题。

例如怎样避免同时操作统一数据造成脏读的问题

本质是一个分布式小文件存储系统

自己可以进行分布式的部署

暂时把分布式理解为多台机器同时干活

zookeeper设备取主 zookeeper 主备_zookeeper设备取主

主从集群(常见一主多从)

主从各司其职    但是从角色受到主角色管理

 主备集群(常见一主一备)

解决单点故障,但是同一时间有且只有一个主可以工作,当主挂了备顶上

主角色  active

备角色 standby    

failover(容错:容忍错误的送达)

Zookeeper就是主从集群。

zookeeper设备取主 zookeeper 主备_zookeeper设备取主_02

特性:

  1. 全局唯一性
  2. 可靠性
  3. 顺序性
  4. 数据更新原子性
  5. 实时性

zookeeper设备取主 zookeeper 主备_删除节点_03

集群角色:

 

leader:集群核心,事务请求(写操作的)唯一调度和处置者

follower:处理客户端(度操作)非事务请求,转发事务请求给leader,参与集群leader选举投票

observer:观察者角色  只提供非事务请求,用于在不影响集群事务处理能力前提下提升集群的非事物处理能力

zookeeper设备取主 zookeeper 主备_客户端_04

数据模型:

标准的文件系统:Windows和Linux

  1. 文件系统的根 /
  2. 根下面可以创建文件夹文件
  3. 文件下面不能在创建孩子但是文件夹下面可以
  4. 文件夹不能保存数据数据保存在文件之中
  5. 通过路径可以唯一定位一个资源/aaa/bbb/c.txt
  6. 同类型的不能重名

zookeeper设备取主 zookeeper 主备_删除节点_05

zookeeper自己文件特征:

 

  1. 不再有文件文件夹之分,都叫节点znode
  2. znode即像文件又像文件夹
  3. 通常以KB大小为单位
  4. 绝对路径

集群搭建:

zookeeper设备取主 zookeeper 主备_客户端_06

CentOS自动同步互联网时间:

zookeeper设备取主 zookeeper 主备_删除节点_07

 

集群搭建:

zookeeper设备取主 zookeeper 主备_子节点_08

 

节点类型:

 

 

znode分为临时节点和永久节点

临时节点 :一旦会话结束,临时节点将被自动删除,临时节点不允许有子节点

永久节点:该节点的生命周期不会依赖与会话,只有客户端删除他们才会被删除

 

znode 有序列化的特性,创建时会自动追加一个不断增加的序列号,他会记录每个节点创建的先后顺序

 

创建节点:creat [-s] [-e] path data acl 

-s 顺序  -e 临时 若不能指定为永久节点  acl进行权限限制

zookeeper设备取主 zookeeper 主备_zookeeper设备取主_09

删除节点:若删除节点存在子节点,那么无法删除该节点必须先删除子节点再删除父节点

 

quota:节点限制

setquota -n |-b val path 对节点增加限制

n:子节点最大个数

b:数据值的最大长度

val:子节点最大个数或数据值的最大长度

path:节点路径

quota限制是软性限制并不具有强制的约束性,超出约束只能在日志中警告一下

zookeeper设备取主 zookeeper 主备_客户端_10

 

Watcher

Zookeeper:提供了分布式数据发布和订阅功能

Watcher机制来实现这种分布式的通知功能

客户端向服务端注册Watcher服务端事件发生触发Watcher,客户端回调watcher得到触发事件情况

监听事件:

  1. 需要监听的 设置监听 监听某个感兴趣事件
  2. 监听运行时将是否发生
  3. 如果监听的事件发送监听触发告诉通知给设置监听的
  4. 回调(挖个坑 回马枪 满足后回来继续)

watch特点:

  1. 一次性触发
  2. 事件封装
  3. event异步发送
  4. 先注册再触发