zookeeper入门到精通

news2024/12/19 4:27:31

文章目录

  • 一、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的工作机制

在这里插入图片描述

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/371849.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

C++学习笔记-继承

继承的基本概念 类与类之间的关系 has-A,包含关系,用以描述一个类由多个“部件类”构成,实现has-A关系用类的成员属性表示,即一个类的成员属性是另一个已经定义好的类。 use-A,一个类使用另一个类,通过类…

前端面试题整理6-react

React 中 keys 的作用是什么? Keys是 React 用于追踪哪些列表中元素被修改、被添加或者被移除的辅助标识 在开发过程中,我们需要保证某个元素的 key 在其同级元素中具有唯一性。在 React Diff 算法中React 会借助元素的 Key 值来判断该元素是新近创建的还…

第五章 Opencv图像的几何变换

目录1.缩放图像1-1.resize()方法2.翻转图像2-1.flip()方法3.仿射变换图像3-1.warpAffine()方法3-2.平移3-3.旋转3-4.倾斜4.透视图像4-1.warpPerspective()方法几何变换是指改变图像的几何结构,例如大小、角度和形状等,从而使图像呈现出缩放、翻转、仿射和…

KUKA机器人外部自动运行模式的相关信号配置

KUKA机器人外部自动运行模式的相关信号配置 通过例如PLC这样的控制器来进行外部自动运行控制时,运行接口向机器人控制系统发出机器人进程的相关信号(例如运行许可、故障确认、程序启动等),机器人向上级控制系统发送有关运行状态和故障状态的信息。 必需的配置:  配置CEL…

Oracle-01-简介篇

🏆一、Oracle的历史和发展 Oracle公司成立于1977年,由拉里埃里森(Larry Ellison)、鲍勃明特(Bob Miner)和埃德奥茨(Ed Oates)共同创立。起初,公司的主要业务是开发和销售…

docker基础用法及镜像和容器的常用命令大全

1.docker 体系架构 Docker 采用了 C / S 架构,包括客户端和服务端。Docker 守护进程作为服务端接受来自客户端的请求,并处理这些请求(创建、运行、分发容器)。客户端和服务端既可以运行在一个机器上,也可通过 socket 或…

数字IC手撕代码--乐鑫科技(次小值与次小值出现的次数)

前言:本专栏旨在记录高频笔面试手撕代码题,以备数字前端秋招,本专栏所有文章提供原理分析、代码及波形,所有代码均经过本人验证。目录如下:1.数字IC手撕代码-分频器(任意偶数分频)2.数字IC手撕代…

九龙证券|阿里+鸿蒙+人工智能+元宇宙概念热度爆棚,“会说话的猫”亮了!

近一周组织调研个股数量有240多只,汤姆猫成为调研组织数量最多的股票。 证券时报数据宝统计,近一周组织调研公司数量有240多家。从调研组织类型来看,证券公司调研相对最广泛,调研230多家公司。 “会说话的猫”亮了 汤姆猫成为近…

倒计时3天:现实与虚拟交织,元宇宙警察将如何执法?

在元宇宙、Web3高速发展的时代,欧科云链以科技助警,帮助公安等机构实现对新型犯罪的监管与侦破。 ——摘要元宇宙作为应用场景和生活方式的未来,拥有着巨大的发展潜力。伴随5G网络、云计算、区块链等技术迅速发展,虚拟现实、人机交…

java面试题-JVM类加载机制

类加载的生命周期?1. 加载阶段(Loading)在Java程序中,当需要使用某个类时,JVM会使用类加载器来查找并加载该类文件。类加载器会首先从文件系统或网络中查找相应的 .class 文件,读取类的二进制数据&#xff…

【JDK8新特性之方法引用-案例实操】

一.JDK8新特性之方法引用-案例实操 之前我们学习了Stream流以及Lambda表达式相关的内容,如果想看的同学可以看一下之前的文章,接下来我们就来学习让Lambda表达式更加简洁的方法引用。 二. 什么是方法引用?为什么要使用方法引用? …

Leetcode Solutions - Part 1

回溯: 字符串的排列 回溯:78. 子集 给你一个整数数组 nums ,数组中的元素 互不相同 。返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。你可以按 任意顺序 返回解集。 示例 1: 输入:nums …

【Java】让我们对多态有深入的了解(九)

目录 (1)接口的基本介绍​编辑 (2)接口的注意事项和细节 1.接口不能被实例化 2.接口中所有方法是public方法,接口中的抽象方法,可以不用abstract修饰 3.一个普通类实现接口,必须将接口所有…

ARMv8 architecture里的Memory aborts

在AArch64 Virtual Memory System Architecture中,有以下几种机制会导致PE在访问memory失败时产生exceptions。 Debug exception: An exception caused by the debug configuration.Alignment fault: An Alignment fault is generated if the address used for a m…

【YSYY】DSPE-PEG-cRGD,磷脂-聚乙二醇-靶向穿膜肽,靶向功能材料

靶向穿膜肽RGD环肽,磷脂-聚乙二醇-cRGD中的cRGD是五元环肽。 DSPE(1,2-二硬脂酰-sn-甘油-3-磷酸乙醇胺)是一种饱和的18碳磷脂,常用于脂质体的合成。聚乙二醇(PEG)偶联DSPE具有亲水性。聚乙二醇能增强溶解性…

一文2000字手把手教你自动化测试Selenium+pytest+数据驱动

主流自动化框架 selenium :web端自动化框架 ,(行业里面最核心的框架) appium :手机app端框架 requests :接口测试 selenium 工具类封装 selenium提供了很多方法供我们去完成网页元素的操作, …

1.创建Springboot项目

一:进入https://start.spring.io/,如下是相关步骤:地址https://start.spring.io/maven 方式springboot版本项目名称jar方式点击创建二:点击(generate)生产自动下载1.IDEA 直接打开2.启动成功SpringdiApplic…

【计算机网络】TCP底层设计交互原理

文章目录1.TCP底层三次握手详细流程2.TCP洪水攻击介绍和ss命令浅析3.Linux服务器TCP洪水攻击入侵案例4.TCP洪水攻击结果分析和解决方案5.TCP底层四次挥手详细流程1.TCP底层三次握手详细流程 TCP的可靠性传输机制:TCP三次我手的流程 一次握手:客户端发送一…

Java中抽象类有什么用

抽象类是用来捕捉子类的通用特性的,是被用来创建继承层级里子类的模板。现实中有些父类中的方法确实没有必要写,因为各个子类中的这个方法肯定会有不同;而写成抽象类,这样看代码时,就知道这是抽象方法,而知…

39-Golang中的接口

Golang中的接口基本介绍基本语法注意事项和细节案例实现对Hero结构体切片的排序:sort.Sort(data Interface)实现接口和继承之间的比较区别基本介绍 interface类型可以定义一组方法,但是这些不需要实现。并且interface不能包含任何变量。到某个自定义类型…