当前位置: 首页 > news >正文

zookeeper学习、配置文件参数详解

zookeeper学习、配置文件参数详解

  • zookeeper 配置文件参数详解
  • tickTime 、session 的过期时间、maxSessionTimeout 三者之间的关系
  • initLimit,syncLimit什么区别
  • minSessionTimeout 默认值,**他的单位是ms**

在这里插入图片描述

zookeeper 配置文件参数详解


ZooKeeper 是一个分布式协调服务,它可以维护配置信息、命名空间、分布式同步等。ZooKeeper 的配置文件通常是 zoo.cfg,这个文件中包含了 ZooKeeper 运行所需要的配置信息。

以下是一些主要的 ZooKeeper 配置参数及其含义:

  1. tickTime:这是 ZooKeeper 中的基本时间单位,以毫秒为单位。这个值会影响到其他很多配置项,比如 session 的过期时间就是由这个值和 maxSessionTimeout 来共同决定的。

  2. dataDir:ZooKeeper 保存数据的目录。这个目录会包含一个名为 version-2 的文件夹,里面保存了所有的事务日志和快照文件。

  3. dataLogDir:这个是 ZooKeeper 保存事务日志的目录,如果配置了这个参数,事务日志就不会保存在 dataDir 中了。

  4. clientPort:客户端连接 ZooKeeper 服务的端口,默认是 2181。

  5. initLimit:这个参数配置了启动 ZooKeeper 服务器与连接到它的 followers 之间的心跳检测频率。这个值是以 tickTime 为单位的。

  6. syncLimit:这个参数配置了 ZooKeeper 服务器与连接到它的 followers 之间同步的频率。这个值也是以 tickTime 为单位的。

  7. maxClientCnxns:这个参数配置了 ZooKeeper 能接受的最大客户端连接数。

  8. minSessionTimeout:这个参数配置了 session 的最小超时时间,这个值是以 tickTime 为单位的。

  9. maxSessionTimeout:这个参数配置了 session 的最大超时时间,这个值也是以 tickTime 为单位的。

  10. server.x=A:B:C:这个是集群模式下配置的,x 是服务器的编号,A 是这个服务器的 IP 地址,B 是这个服务器与其他 ZooKeeper 服务器通信的端口,C 是这个服务器用来选举 leader 的端口。

以上是 ZooKeeper 配置文件中的一些主要参数,具体配置应根据实际的需要进行调整。具体的配置方式和详细的参数列表可以参考官方文档。


tickTime 、session 的过期时间、maxSessionTimeout 三者之间的关系


在ZooKeeper中,会话超时的设定是有范围限制的,这个范围是由 tickTimemaxSessionTimeout 两个配置参数决定的。

  1. tickTime:这是 ZooKeeper 中的基本时间单位,以毫秒为单位。

  2. maxSessionTimeout:这个参数配置了 session 的最大超时时间,这个值也是以 tickTime 为单位的。默认情况下,这个值是 tickTime 的 20 倍。,它的单位也是毫秒

会话超时的时间不能超过 maxSessionTimeout 的值,也不能低于 tickTime 的 2 倍。这个规则在客户端创建会话并设置超时时间时会被 ZooKeeper 服务器检查并执行。如果客户端请求的会话超时时间超出了这个范围,那么 ZooKeeper 服务器会将其调整到这个范围的边界上。

所以,tickTimesession 的过期时间以及 maxSessionTimeout 这三者之间的关系可以总结为:session 的过期时间是以 tickTime 为单位的,且其值在 2 * tickTimemaxSessionTimeout 这个范围内。


initLimit,syncLimit什么区别


initLimitsyncLimit 都是用于在 ZooKeeper 集群中管理服务器之间的交互的参数,但它们的应用场景和用途有所不同:

  1. initLimit:这个参数用于配置 ZooKeeper 服务器启动时,leader 和 follower 之间的初始化连接时间,单位为 tickTime。当 ZooKeeper 集群启动时,或者当 leader 服务器宕机后,follower 服务器会与新的 leader 服务器建立连接,这个参数就是用来配置这个连接过程的超时时间的。如果在这个超时时间内,follower 服务器不能与 leader 服务器完成连接,那么 follower 服务器会认为这个连接失败。

  2. syncLimit:这个参数用于配置 ZooKeeper 集群运行时,leader 和 follower 之间的正常交互时间,单位也是 tickTime。这个参数决定了 follower 服务器能容忍的最长的与 leader 服务器的请求响应时间。如果超过这个时间,follower 服务器会认为与 leader 服务器的连接已经断开,然后尝试重新连接或者启动新一轮的 leader 选举。

简单地说,initLimit 是用来配置 follower 服务器在启动或者重新选举 leader 时,与 leader 服务器连接的最长等待时间,而 syncLimit 是用来配置 follower 服务器在正常运行时,与 leader 服务器交互的最长等待时间。

最新解释:

ZooKeeper 在工作时通常有一个领导者(Leader)和多个追随者(Follower),他们需要进行通信以保持同步。initLimitsyncLimit 都是用于管理这些通信的参数。

  1. initLimit:这个参数主要用于 ZooKeeper 集群启动时或者领导者(Leader)崩溃后重新选举时,Follower 服务器与新的 Leader 服务器之间的初始化和同步连接的时间。可以理解为它定义了集群成员连接到新的领导者并同步所有最新数据的最长时间。如果在 initLimit * tickTime 这么长的时间内 Follower 没有完成同步,那么它会被丢弃。
  2. syncLimit:这个参数主要用于运行中的 ZooKeeper 集群,定义了 Leader 和 Follower 之间发送消息、请求和应答的最长时间。如果 Follower 在 syncLimit * tickTime 这么长的时间内没有和 Leader 进行有效交互(例如,接收到 Leader 的心跳消息),那么 Follower 会认为连接已经断开。

所以简单来说,initLimit 是在集群初始化或领导者更换时,Follower 连接并同步 Leader 的最长等待时间。而 syncLimit 是在集群正常运行期间,Follower 与 Leader 之间保持联系的最长时间。两者都是以 tickTime(ZooKeeper 的基本时间单位)为单位计算的。


minSessionTimeout 默认值,他的单位是ms


在 Apache ZooKeeper 的默认配置中,minSessionTimeout 这个参数的默认值并未明确设定。

如果没有显式地设置 minSessionTimeout,ZooKeeper 将使用 tickTime 的两倍作为会话的最小超时时间。这意味着,如果你没有单独设置 minSessionTimeout,并且你的 tickTime 是默认的 2000 毫秒,那么 minSessionTimeout 将会是 4000 毫秒。

因此,在设置会话超时时,需要确保它在 minSessionTimeout(默认为 tickTime 的两倍)和 maxSessionTimeout 之间。如果提供的值超出这个范围,ZooKeeper 服务器将会调整会话超时时间到这个范围的边界值。

相关文章:

zookeeper学习、配置文件参数详解

zookeeper学习、配置文件参数详解 zookeeper 配置文件参数详解tickTime 、session 的过期时间、maxSessionTimeout 三者之间的关系initLimit,syncLimit什么区别minSessionTimeout 默认值,**他的单位是ms** zookeeper 配置文件参数详解 ZooKeeper 是一个分布式协调服…...

SVG 模糊效果

SVG 模糊效果 SVG(Scalable Vector Graphics,可缩放矢量图形)是一种基于XML的图像格式,用于描述二维图形。它是一种矢量图形格式,因此可以无限放大而不失真。SVG广泛应用于网页设计、动画制作和图形编辑等领域。本文将介绍SVG中一种特殊的效果——模糊效果,以及如何使用…...

Electron+vite+vuetify项目搭建

最近想用Electron来进行跨平台的桌面应用开发。同时想用vuetify作为组件,于是想搭建一个这样的开发环境。其中踩了不少坑,总是会出现各种的编译错误和问题,依赖的各种问题,搞了好久最终环境终于弄好可正常开发了。这里分享下快速搭…...

洛谷:P1085 [NOIP2004 普及组] 不高兴的津津

1. 题目链接 https://www.luogu.com.cn/problem/P1085 P1085 [NOIP2004 普及组] 不高兴的津津 2. 题目描述 题目描述:津津每天要上课还要上辅导班,每天学习超过8小时就不开心,帮忙检查下津津的下周日程安排,然后告诉我她哪天不高…...

Webpack4从入门到精通以及和webpack5对比_webpack现在用的是哪个版本

3.1 打包样式资源css-loader、style-loader… {// 匹配哪些文件test: /\.less$/,// 使用哪些loader进行处理use: [// use数组中loader执行顺序:从右到左,从下到上,依次执行(先执行css-loader)// style-loader:创建style标签&#…...

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧

巴鲁夫MacroBuilder2.0.0.0软件巴鲁夫和使用手侧...

分享:Javascript开源桌面环境-Puter

Puter这是一个运行在浏览器里的桌面操作系统,提供了笔记本、代码编辑器、终端、画图、相机、录音等应用和一些小游戏。该项目作者出于性能方面的考虑没有选择 Vue 和 React 技术栈,而是采用的 JavaScript 和 jQuery 构建,支持 Docker 一键部署…...

【idea-jdk1.8】使用Spring Initializr 创建 Spring Boot项目没有JDK8

信息差真可怕! 很久没创建springboot项目,今天使用idea的Spring Initializr 创建 Spring Boot项目时,发现java版本里,无法选择jdk1.8,只有17、21、22;前段时间也听说过,springboot将放弃java8&a…...

647. 回文子串(leetcode)

647. 回文子串(leetcode) 题目描述 给你一个字符串 s ,请你统计并返回这个字符串中回文子串的数目。 回文字符串 是正着读和倒过来读一样的字符串。 子字符串 是字符串中的由连续字符组成的一个序列。 示例1 输入:s “abc” 输出…...

【车载开发系列】汽车嵌入式开发常用工具介绍

【车载开发系列】汽车嵌入式开发常用工具介绍 【车载开发系列】汽车嵌入式开发常用工具介绍 【车载开发系列】汽车嵌入式开发常用工具介绍一. ChipON IDE For KungFu32二. ChipON PRO KF32三. GIT四. JLink五. S32DS六. parasoft ctest七. TCANLINPro八. vector Canoe 一. Chip…...

python脚本获取本机IP的方式

#方法一: #!/usr/bin/python import socket import fcntl import struct def get_ip_address(ifname): s socket.socket(socket.AF_INET,socket.SOCK_DGRAM) return socket.inet_ntoa(fcntl.ioctl( s.fileno(), 0x8915, struct.pack(256s,ifna…...

查看LabVIEW及各个模块和驱动的版本号

要方便地查看当前计算机上安装的LabVIEW版本以及各个模块和驱动的版本号,可以使用以下几种方法: 1. 使用NI MAX (Measurement & Automation Explorer) NI MAX 是一个强大的工具,可以帮助你管理National Instruments硬件、软件和驱动程序…...

LLM主流架构和模型

本文参考自https://github.com/HqWu-HITCS/Awesome-Chinese-LLM?tabreadme-ov-file和Huggingface中的ModelCard(https://huggingface.co/) LLM主要类别架构 LLM本身基于transformer架构。自2017年,attention is all you need诞生起&#x…...

为企业提供动力:用于大型组织的WordPress

可扩展且灵活的架构可通过主题、插件和集成进行定制内置 SEO 功能和营销功能内容管理和协作工具支持多站点安装托管解决方案和面向平台的提供商采用现代前端技术的 Headless CMS 功能 拥有强大、灵活且可扩展的内容管理系统 (CMS) 对于大型组织至关重要。作为最受欢迎和广泛使用…...

Django框架数据库ORM查询操作

Django框架在生成数据库的models模型文件后,旧可以在应用中通过ORM来操作数据库了。今天抽空试了下查询语句。以下是常用的查询语句。 以下查询需要引入django的Sum,Count,Q模块 from django.db.models import Sum,Count,Q 导入生成的mode…...

font-spider按需生成字体文件

font-spider可以全局安装,也可以单个项目内安装,使用npm run xxxx的形式 npm i font-spider "dev": "font-spider ./*.html" <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name&…...

双叒叕-一个-Android-MVVM-组件化架构框架?

LifecycleViewModelLiveDataViewBindingAndroid KTXOkHttp:网络请求Retrofit:网络请求MMKV:腾讯基于 mmap 内存映射的 key-value 本地存储组件Glide:快速高效的Android图片加载库ARoute:阿里用于帮助 Android App 进行组件化改造的框架 —— 支持模块间的路由、通信、解耦BaseR…...

STM32单片机BKP备份寄存器和RTC实时时钟详解

文章目录 1. Unix时间戳 2. UTC/GMT 3. 时间戳转换 4. BKP简介 5. BKP基本结构 6. RTC简介 7. RTC框架图 8. RTC基本结构 9. 代码示例 1. Unix时间戳 实时时钟&#xff0c;本质上是一个定时器&#xff0c;专门用来产生年月日时分秒。 Unix 时间戳&#xff08;Unix T…...

vue3+ts 使用vue3-ace-editor实现Json编辑器

1、效果图 输入代码&#xff0c;点击格式化就出现以上效果&#xff0c;再点击压缩&#xff0c;是以下效果2、安装 npm i vue3-ace-editor 3、使用 新建aceConfig.js文件 // ace配置&#xff0c;使用动态加载来避免第一次加载开销 import ace from ace-builds// 导入不同的主…...

黑马HarmonyOS-NEXT星河版实战

"黑马HarmonyOS-NEXT星河版实战"课程旨在帮助学员深入了解HarmonyOS-NEXT星河版操作系统的开发和实际应用。学员将学习操作系统原理、应用开发技巧和界面设计&#xff0c;通过实战项目提升技能。课程注重实践与理论相结合&#xff0c;为学员提供全面的HarmonyOS开发经…...

基于算法竞赛的c++编程(28)结构体的进阶应用

结构体的嵌套与复杂数据组织 在C中&#xff0c;结构体可以嵌套使用&#xff0c;形成更复杂的数据结构。例如&#xff0c;可以通过嵌套结构体描述多层级数据关系&#xff1a; struct Address {string city;string street;int zipCode; };struct Employee {string name;int id;…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型

摘要 拍照搜题系统采用“三层管道&#xff08;多模态 OCR → 语义检索 → 答案渲染&#xff09;、两级检索&#xff08;倒排 BM25 向量 HNSW&#xff09;并以大语言模型兜底”的整体框架&#xff1a; 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后&#xff0c;分别用…...

条件运算符

C中的三目运算符&#xff08;也称条件运算符&#xff0c;英文&#xff1a;ternary operator&#xff09;是一种简洁的条件选择语句&#xff0c;语法如下&#xff1a; 条件表达式 ? 表达式1 : 表达式2• 如果“条件表达式”为true&#xff0c;则整个表达式的结果为“表达式1”…...

IT供电系统绝缘监测及故障定位解决方案

随着新能源的快速发展&#xff0c;光伏电站、储能系统及充电设备已广泛应用于现代能源网络。在光伏领域&#xff0c;IT供电系统凭借其持续供电性好、安全性高等优势成为光伏首选&#xff0c;但在长期运行中&#xff0c;例如老化、潮湿、隐裂、机械损伤等问题会影响光伏板绝缘层…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

面向无人机海岸带生态系统监测的语义分割基准数据集

描述&#xff1a;海岸带生态系统的监测是维护生态平衡和可持续发展的重要任务。语义分割技术在遥感影像中的应用为海岸带生态系统的精准监测提供了有效手段。然而&#xff0c;目前该领域仍面临一个挑战&#xff0c;即缺乏公开的专门面向海岸带生态系统的语义分割基准数据集。受…...

如何应对敏捷转型中的团队阻力

应对敏捷转型中的团队阻力需要明确沟通敏捷转型目的、提升团队参与感、提供充分的培训与支持、逐步推进敏捷实践、建立清晰的奖励和反馈机制。其中&#xff0c;明确沟通敏捷转型目的尤为关键&#xff0c;团队成员只有清晰理解转型背后的原因和利益&#xff0c;才能降低对变化的…...

通过 Ansible 在 Windows 2022 上安装 IIS Web 服务器

拓扑结构 这是一个用于通过 Ansible 部署 IIS Web 服务器的实验室拓扑。 前提条件&#xff1a; 在被管理的节点上安装WinRm 准备一张自签名的证书 开放防火墙入站tcp 5985 5986端口 准备自签名证书 PS C:\Users\azureuser> $cert New-SelfSignedCertificate -DnsName &…...

MySQL 主从同步异常处理

阅读原文&#xff1a;https://www.xiaozaoshu.top/articles/mysql-m-s-update-pk MySQL 做双主&#xff0c;遇到的这个错误&#xff1a; Could not execute Update_rows event on table ... Error_code: 1032是 MySQL 主从复制时的经典错误之一&#xff0c;通常表示&#xff…...

tauri项目,如何在rust端读取电脑环境变量

如果想在前端通过调用来获取环境变量的值&#xff0c;可以通过标准的依赖&#xff1a; std::env::var(name).ok() 想在前端通过调用来获取&#xff0c;可以写一个command函数&#xff1a; #[tauri::command] pub fn get_env_var(name: String) -> Result<String, Stri…...