zookeeper入门到精通

文章目录

  • 一、zookeeper入门
    • 1. 概述
      • zookeeper的工作机制
    • 2.特点
    • 3.数据结构
    • 4.应用场景
      • 4.1.统一命名服务
      • 4.2.统一配置管理
      • 4.3.统一集群管理
      • 4.4.服务器节点动态上下线
      • 4.5.软负载均衡
    • 5.下载地址
  • 二、zookeeper安装
    • 1.本地模式安装
    • 2.配置参数解读
  • 三、zookeeper集群操作
    • 1.集群操作
      • 1.1 集群安装
      • 1.2选举机制(重要)
      • 1.3zk集群启动停止脚本
    • 2.客户端命令操作
      • 2.1 命令行语法
      • 2.2znode节点数据信息
      • 2.3节点类型(持久/临时/有序/无序)
      • 2.4监听器原理(重要):一次监听,多次监听需要多次注册
        • 2.4.1 监听节点值
        • 2.4.2 监听子节点变化(路径变化)
      • 2.5节点删除与查看
    • 3.客户端API操作
      • 3.1 IDEA环境搭建
      • 3.2 创建zk客户端
      • 3.3 创建子节点
      • 3.4 获取子节点并开启监听变化
      • 3.5 判断Znode是否存在
    • 4.客户端向服务端写数据流程
      • 4.1 直接写给leader
      • 4.2 写给了follower
  • 四、服务动态上下线监听案例(重点)
    • 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分布式锁案例
    • 2.curator框架实现分布式锁案例(企业实战用这种)
  • 六、企业面试真题(重点)
    • 1.选举机制
    • 2.生产环境集群安装多少zk节点合适
    • 3.常用命令
  • 七、zookeeper源码


文章整理自:尚硅谷zk

一、zookeeper入门

1. 概述

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

zookeeper的工作机制

zookeeper入门到精通_第1张图片

2.特点

zookeeper入门到精通_第2张图片

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

3.数据结构

zookeeper入门到精通_第3张图片

4.应用场景

4.1.统一命名服务

nginx也能实现
zookeeper入门到精通_第4张图片

4.2.统一配置管理

zookeeper入门到精通_第5张图片

4.3.统一集群管理

zookeeper入门到精通_第6张图片

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

zookeeper入门到精通_第7张图片

4.5.软负载均衡

zookeeper入门到精通_第8张图片

5.下载地址

https:zookeeper.apache.org

二、zookeeper安装

1.本地模式安装

2.配置参数解读

三、zookeeper集群操作

1.集群操作

1.1 集群安装

1.2选举机制(重要)

第一次启动时选举机制:
zookeeper入门到精通_第9张图片

非第一次启动时选举机制
zookeeper入门到精通_第10张图片

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节点数据信息

zookeeper入门到精通_第11张图片

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

zookeeper入门到精通_第12张图片

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

zookeeper入门到精通_第13张图片

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

zookeeper入门到精通_第14张图片

4.2 写给了follower

zookeeper入门到精通_第15张图片

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

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

1.需求

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

2.需求分析

zookeeper入门到精通_第16张图片

3.具体实现

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

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

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

4.测试

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

zookeeper入门到精通_第17张图片

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源码

你可能感兴趣的:(中间件,java功能,java-zookeeper,zookeeper,分布式)