Zookeeper:
是分布式协调服务的开源框架,用来解决分布式集群中应用系统的一致性问题。
例如怎样避免同时操作统一数据造成脏读的问题
本质是一个分布式小文件存储系统
自己可以进行分布式的部署
暂时把分布式理解为多台机器同时干活
主从集群(常见一主多从)
主从各司其职 但是从角色受到主角色管理
主备集群(常见一主一备)
解决单点故障,但是同一时间有且只有一个主可以工作,当主挂了备顶上
主角色 active
备角色 standby
failover(容错:容忍错误的送达)
Zookeeper就是主从集群。
特性:
- 全局唯一性
- 可靠性
- 顺序性
- 数据更新原子性
- 实时性
集群角色:
leader:集群核心,事务请求(写操作的)唯一调度和处置者
follower:处理客户端(度操作)非事务请求,转发事务请求给leader,参与集群leader选举投票
observer:观察者角色 只提供非事务请求,用于在不影响集群事务处理能力前提下提升集群的非事物处理能力
数据模型:
标准的文件系统:Windows和Linux
- 文件系统的根 /
- 根下面可以创建文件夹文件
- 文件下面不能在创建孩子但是文件夹下面可以
- 文件夹不能保存数据数据保存在文件之中
- 通过路径可以唯一定位一个资源/aaa/bbb/c.txt
- 同类型的不能重名
zookeeper自己文件特征:
- 不再有文件文件夹之分,都叫节点znode
- znode即像文件又像文件夹
- 通常以KB大小为单位
- 绝对路径
集群搭建:
CentOS自动同步互联网时间:
集群搭建:
节点类型:
znode分为临时节点和永久节点
临时节点 :一旦会话结束,临时节点将被自动删除,临时节点不允许有子节点
永久节点:该节点的生命周期不会依赖与会话,只有客户端删除他们才会被删除
znode 有序列化的特性,创建时会自动追加一个不断增加的序列号,他会记录每个节点创建的先后顺序
创建节点:creat [-s] [-e] path data acl
-s 顺序 -e 临时 若不能指定为永久节点 acl进行权限限制
删除节点:若删除节点存在子节点,那么无法删除该节点必须先删除子节点再删除父节点
quota:节点限制
setquota -n |-b val path 对节点增加限制
n:子节点最大个数
b:数据值的最大长度
val:子节点最大个数或数据值的最大长度
path:节点路径
quota限制是软性限制并不具有强制的约束性,超出约束只能在日志中警告一下
Watcher
Zookeeper:提供了分布式数据发布和订阅功能
Watcher机制来实现这种分布式的通知功能
客户端向服务端注册Watcher服务端事件发生触发Watcher,客户端回调watcher得到触发事件情况
监听事件:
- 需要监听的 设置监听 监听某个感兴趣事件
- 监听运行时将是否发生
- 如果监听的事件发送监听触发告诉通知给设置监听的
- 回调(挖个坑 回马枪 满足后回来继续)
watch特点:
- 一次性触发
- 事件封装
- event异步发送
- 先注册再触发