一. ZK的部分特点
- 一个leader,多个follower模式
- 集群中只要有半数存活,即可以正常工作;
- 部署奇数服务器原则;生产集群安装多少ZK合适:
- 10台:3
- 20台:5
- 100台:11
- 200台: 11
- 全局数据一致性,以及更新原子性,一次数据更新要不全成功,要不失败;
- ZK数据结构,树状,类似于linux文件结构;每个ZNODE可以存储1MB数据;
- 统一命名服务,统一配置管理,统一集群管理,服务器节点动态上下线(注册中心),软负载均衡;
二. 配置参数解读(zoo.cfg)
- dataDir:数据存放路径,核心参数,调整;
- tickTime;默认2000,心跳时间;
- initLimit;默认10,即初始化集群时,超时时间未10个2000ms;
- syncLimit;默认5,LF运行期间节点请求超时时间;
- clientPort;默认2181,供客户端连接端口号
- 在dataDir目录下创建myid文件,文件内容为数字,标识集群节点号。
- 添加配置:server.A=B:C:D
示例:server.2=192.168.1.1:2888:3888
- A是个myid中的数字
- B是每个服务器的IP地址;
- C是L和F交换信息的端口;
- D是选举端口
三. ZK选举机制
- 第一次选举
- 投票过半数时,服务器id大的胜出,按照奇数安装,一般就是中间那台机器为leader;
- 第二次启动选举
- EPOCH大值胜出;
- EPOCH相同时,事务ID大的胜出;
- 事务ID也相同时,服务器ID大的胜出。
四. ZK节点信息
- 节点类型:持久、短暂、有序号、无序号
- 启动客户端连接某个server:zkCli.sh -server 192.168.1.1:2181
- 常用命令
- help
- ls/ls -s
- get/get -s获取详细/get -w监听
- create永久节点/create -s 有序号节点/create -e 临时节点
- detete/deteleall 删除节点
- stat 查看状态
- set 设置值
五. 常见应用与实现
- 服务器动态上下线:注册中心
- zk分布式锁