文章整理自:尚硅谷zk

一、zookeeper入门

1. 概述

zookeeper是一个开源的分布式的,为分布式框架提供协调服务的Apache项目;

zookeeper的工作机制

在这里插入图片描述

2.特点

在这里插入图片描述

特点:
1.zookeeper:一个领导(leader),多个跟随者(follower)组成的集群
2.集群中只要有半数以上的节点存活,zk集群就能正常服务。所以zk适合安装技术台服务器
3.全局数据一致:每个server保存一份相同的副本数据,client无论连接到那个server,数据都是一致的。
4.更新请求顺序执行,来自同一个client的更新请求按其发送顺序依次执行。
5.数据更新原子性,一次数据更新要么成功,要么失败。
6.实时性,在一定时间范围内,client能读到最新的数据。

3.数据结构

在这里插入图片描述

4.应用场景

4.1.统一命名服务

nginx也能实现
在这里插入图片描述

4.2.统一配置管理

在这里插入图片描述

4.3.统一集群管理

在这里插入图片描述

4.4.服务器节点动态上下线

在这里插入图片描述

4.5.软负载均衡

在这里插入图片描述

5.下载地址

https:zookeeper.apache.org

二、zookeeper安装

1.本地模式安装

2.配置参数解读

三、zookeeper集群操作

1.集群操作

1.1 集群安装

1.2选举机制(重要)

第一次启动时选举机制:
在这里插入图片描述

非第一次启动时选举机制
在这里插入图片描述

1.3zk集群启动停止脚本

2.客户端命令操作

2.1 命令行语法

#进入zk容器
docker exec -it kafka-compose-zookeeper-1 /bin/sh

#启动zkcli
./bin/zkClit/sh

#创建节点 -e 暂时节点,-s顺序节点,'machao'为当前节点的值
create -e -s /sanguo/shuguo/machao 'machao'

# 修改节点值
set /sanguo/shuguo/machao "machaoerzi"

#退出
quit

2.2znode节点数据信息

在这里插入图片描述

2.3节点类型(持久/临时/有序/无序)

2.4监听器原理(重要):一次监听,多次监听需要多次注册

在这里插入图片描述

2.4.1 监听节点值
# get -w 监听节点值变化。监听sanguo一次
get -w /shanguho
2.4.2 监听子节点变化(路径变化)

路径的监听只会监听子路径,不会进行递归向下监听

# ls -w 监听节点路径变化。也是监听一次
ls -w /shanguo

2.5节点删除与查看

# delete 删除当前节点(此节点必须无子节点)
delete -w /shanguo

# deleteall 删除此节点下所有子节点
deleteall -w /shanguo

# stat 查看节点状态
stat /sanguo
# 效果等同stat
get -s /sanguo

3.客户端API操作

3.1 IDEA环境搭建

3.2 创建zk客户端

3.3 创建子节点

3.4 获取子节点并开启监听变化

3.5 判断Znode是否存在

4.客户端向服务端写数据流程

4.1 直接写给leader

在这里插入图片描述

4.2 写给了follower

在这里插入图片描述

第5步:leader告诉接受client请求的follower,进群超过半数已经同步了数据,可以给client响应了

四、服务动态上下线监听案例(重点)

1.需求

某分布式系统中,主节点可以有多台,可以动态上下线,任意一台客户端都能感知到主节点服务器的上下线。

2.需求分析

在这里插入图片描述

3.具体实现

3.1 zk-server命令行创建根节点/server

3.2 zk-client的服务器节点连接注册到zk-server的/server目录下

3.3 zk-client的客服端连接zk-server,监听/server目录下节点的变化

4.测试

五.zk分布式锁案例(重点)

在这里插入图片描述

1.原生zk分布式锁案例

分布式锁:实现的是如何加锁和解锁;
用zk的临时顺序节点,后节点watch前一个节点路径(是否下线)

2.curator框架实现分布式锁案例(企业实战用这种)

六、企业面试真题(重点)

1.选举机制

半数机制:超过半数节点投票通过,即为选举成功;
(1)第一次启动选举规则:
投票过半数时,服务器id(sid)大的胜出
(2)非第一次启动选举规则:
第一位序:EPOCH大的直接胜出(leader任期)
第二位序:EPOCH相同时,事务ID(TID)大的直接胜出
第三位序:事务ID相同时,服务id(sid)大的胜出

2.生产环境集群安装多少zk节点合适

安装奇数台zk
生产经验:

  • 10台服务器,3台zk
  • 20台服务器,5台zk
  • 100台服务器,11台zk
  • 200台服务器,11台zk

zk服务器台数越多:好处,提高可靠性;坏处,提高通讯延迟

3.常用命令

ls、get、delete、stat、create

七、zookeeper源码

Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐