1、服务器角色:
Leader:
- 唯一
- 在leader宕机后,会选举出新的leader
- 执行写请求,执行完毕将数据同步给Follower和Observer,同步成功过半认为成功
- 执行读、写、选举
Follower:
- 至少一台
- 执行读、选举
- 接收到写请求会转发给Leader
Observer:
- conf文件中配置:observer可指定服务角色
- 执行读
- 接收到写请求会转发给Leader
2、过半机制(默认,无法关闭):当3台服务器,宕机一台,剩余2台,集群还能运行;再宕机一台,集群无法运行。
奇数台原因:保证选举、资源利用率(过半机制,用4台和3台,结果一致,都是在2台能正常工作)
偶数台容易出现脑裂问题
3、数据模型-->树形结构(类似文件系统)
4、ZNode(源码类名:DataNode)
节点类型
- 临时节点(empemeral) create -e /Test001 001
- session断开后,会被删除
- ephemeralOwner有值
- 临时顺序节点(empemeral sequence) create -e -s /Test003 003
- 持久节点(persistent) create /Test002 002
- 持久顺序节点(persistent sequence) create /Test002 002 得到Test0000000003节点名(适用于队列任务,需要排序)
注:
原生zk不能级联创建;使用curator可以
临时节点不能创建子节点;
5、Watcher
注:zk原生watcher一次性的,第二次使用需再次添加
6、版本
- cversion(子节点被修改的版本号)
- dataversion(数据版本,被修改次数,get一次也会+1)
- aclversion(权限访问控制版本)