Zookeeper工作机制、特点、数据结构、应用场景、配置参数解读

news/2024/12/30 22:32:05/

ZK工作机制

从涉及模式角度来理解:是一个基于观察者模式设计的分布式服务管理框架,负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,zk就负责通知已在zk上注册的那些观察者做出相应的反应。
Zk = 文件系统+通知机制

特点

在这里插入图片描述

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

数据结构

Zk数据模型的结构与Unix文件系统很类似,整体可以看作是一棵树,每个节点称做一个ZNode。每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。
在这里插入图片描述

应用场景

统一命名服务

分布式环境下,经常需要对应用/服务进行统一命名,便于识别
例如:IP不容易记住,而域名容易记住
在这里插入图片描述

统一配置管理

1、分布式环境下,配置文件同步非常常见:
一个要求一个集群中,所有节点的配置信息是一致的,比如Kafaka集群
对配置文件修改后,希望能够快速同步到各个节点上

2、配置管理可交由Zk实现:
可将配置信息写入zk上的一个Znode
各个客户端服务器监听这个Znode

统一集群管理

1、分布式环境中,实时掌握每个节点的状态是必要的。
可根据节点实时状态做出一些调整
2、zk可以实现实时监控节点状态变化
可将节点信息写入zk上的一个ZNode
监听这个ZNode可获取他的实时状态变化
在这里插入图片描述

服务器动态上下线

客户端能实时洞察到服务器上下线的变化
在这里插入图片描述

软负载均衡

在ZK记录每台服务器的访问数,让访问数量少的服务器去处理最新的客户端请求
在这里插入图片描述

ZK配置参数解读

# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial 
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between 
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just 
# example sakes.
dataDir=/tmp/zookeeper
# the port at which the clients will connect
clientPort=2181
# the maximum number of client connections.
# increase this if you need to handle more clients
#maxClientCnxns=60
#
# Be sure to read the maintenance section of the 
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
dataDir=D://soft//apache-zookeeper-3.5.7-bin//data
dataLogDir=D://soft//apache-zookeeper-3.5.7-bin//log

tickTime

通信心跳时间,zk服务器与客户端,客户端与客户端,每隔两秒发送一次心跳,单位毫秒
在这里插入图片描述

initLimit

Leader与Follower初始通信时限
Leader与Follower初始连接时能容忍的最多心跳数,10次*2秒,也就是要在20秒内建立连接

syncLimit

Leader与Follower同步通信时限
Leader和Follower直接通信时间如果超过syncLimit*tickTime,Leader认为Follwer死掉,从服务器列表中删除Follwer。

dataDir

保存ZK中的数据。
注意:默认的tmp目录,容易被Linux系统定期删除,所以一般不用默认的tmp目录。

clientPort

客户端连接端口,通常不做修改

下一篇:Zookeeper在Windows环境的安装
https://blog.csdn.net/qq_40525480/article/details/135088151


http://www.ppmy.cn/news/1527017.html

相关文章

【leetcode】树形结构习题

二叉树的前序遍历 返回结果:[‘1’, ‘2’, ‘4’, ‘5’, ‘3’, ‘6’, ‘7’] 144.二叉树的前序遍历 - 迭代算法 给你二叉树的根节点 root ,返回它节点值的 前序 遍历。 示例 1: 输入:root [1,null,2,3] 输出:[1,…

人工智能物联网:一项综述

这篇论文的标题是《Artificial Intelligence of Things: A Survey》,作者是 Shakhrul Iman Siam 等人,来自不同的大学和研究机构。论文提供了对人工智能物联网(AIoT)研究的系统性和全面性回顾。以下是论文的主要内容概述&#xff…

【C#生态园】提高C#开发效率和代码质量的利器:ORM库和数据库连接库

探秘C#数据库利器:全面解读6大库功能与用法 前言 在现代软件开发中,使用合适的库可以极大地提高开发效率和代码质量。针对不同的数据库操作需求,C#开发者常常会选择不同的ORM库和数据库连接库来满足其需求。本文将介绍一些用于C#的主流ORM库…

Win11+Ubuntu20.04双系统安装教程(避坑版)

Win11Ubuntu20.04双系统安装教程(避坑版) 前言系统盘制作安装Rufus系统盘制作 Windows磁盘配置移动分区(磁盘分区时出现不连续的未分配空间需要用到,如果是连续的未分配空间即无需操作)安装分区助手移动分区 安装Ubunt…

adb devices不显示连接设备怎么解决

adb devices不显示设备,首先用老办法检查。假如是显示adb这个命令不认识,那就是系统路径问题。假如能认识adb这个命令,那就检查一下手机有没有开usb调试。 但是我遇到了更奇怪的问题:我把网上的攻略都试了一遍,设备驱…

SVM——支持向量机的学习入门

1、推荐文章 1、一文看懂SVM算法 2、图解机器学习|支持向量机模型详解 3、支持向量机的直观理解 2、分类问题 假设你的大学开设了一门机器学习(ML)课程。课程导师发现数学或统计学好的学生表现最佳。随着时间的推移,积累了一些数据&…

SAP系统使用BRTOOLS的系统COPY

SAP系统使用BRTOOLS的系统COPY 今天偶然翻到的,这个是在之前的公司自己兼职basis摸索的,速度比较快,比标准的system copy好用很多。使用的是SAP系统的BRTOOLS,每次都是成功的,那个NAS有的就是LINUX的一些基本操作,基本都是一样的。 1、ERPRD1服务器使用DB13每天备份到指…

开源 AI 智能名片 S2B2C 商城小程序相关角色的探索

摘要:本文围绕开源 AI 智能名片 S2B2C 商城小程序的决策产品方向,基于两个原则展开研究。原则一是根据该产品方向尽可能多地寻找相关角色,原则二是以探索痛点而非销售为核心。同时确保识别出的角色覆盖价值使用者、价值传递者与价值生产者三类…