zookeeper的简单使用

Zookeeper使用详解 4. 在安装目录下找到"bin"文件夹,运行"zkServer.sh"或"zkServer.bat"文件,根据不同的操作系统选择相应的脚本。1. 使用Zookeeper提供的命令行工具,可以查看Zookeeper的当前状态,包括节点、连接状态等信息。3. 可以使用Zookeeper实现配置管理,通过集中管理的方式配置系统中的各种参数和规则。2. 可以使用"create"命令创建新的节点,使用"delete"命令删除节点。4. 可以使用"set"命令设置节点的值,使用"get"命令获取节点的值。 阅读详情

这里是修真院后端技术分享,每篇分享文从

八个方面深度解析后端知识/技能,本篇分享的是:

【zookeeper的简单使用】

【修真院java小课堂】zookeeper的简单使用

大家好,我是IT修真院郑州分院第11期的JAVA学员,一枚正直纯洁善良的java程序员。

今天给大家分享一下,zookeeper的简单使用。

1.背景介绍
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,由Client和Server构成,Server提供了一致性复制和存储服务,Client包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等。
它是集群的管理者,采用树形的数据结构,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简单易用的接口和性能高效、功能稳定的系统提供给用户。

2.知识剖析
server角色

1)leader:领导者,可以接受client请求,也接收其他server转发的写请求,负责更新系统状态。
2)follower:可以接收client请求,如果是写请求将转发给leader来更新系统状态。
3)observer:同follower,唯一区别就是不参与选主过程。

广播机制

Zookeeper的核心是原子广播,这个机制保证了各个server之间的同步。实现这个机制的协议叫做Zab协议。Zab协议有两种模式,它们分别是恢复模式和广播模式。当服务启动或者在领导者崩溃后,Zab就进入了恢复模式,当领导者被选举出来,且大多数server的完成了和leader的状态同步以后,恢复模式就结束了。状态同步保证了leader和server具有相同的系统状态。

session机制

client连接server成功后,server赋予该client一个sessionid,client需要不断发送心跳维持session有效,在session有效期内,可以使用Zookeeper提供的API进行操作。如果因为某些原因导致client无法正常发送心跳,在超时时长后,server会判断该client的session失效,此时client发送的任何操作都会被拒绝,并触发ExpiredException异常,此时KeeperState处于Expired状态.但client有自动重连server的机制,如果client的心跳无法正常连接server,会在session超时前尝试连接其他server,连接成功后可以继续操作。

一致性

1)假设有2n+1个server,在同步流程中,leader向follower同步数据,当同步完成的follower数量大于 n+1时同步流程结束,系统可接受client的连接请求。如果client连接的并非同步完成的follower,那么得到的并非最新数据,但可以保证单调性。
2)follower接收写请求后,转发给leader处理;leader完成两阶段提交的机制。向所有server发起提案,当提案获得超过半数(n+1)的server认同后,将对整个集群进行同步,超过半数(n+1)的server同步完成后,该写请求完成。如果client连接的并非同步完成的follower,那么得到的并非最新数据,但可以保证单调性。

Watch机制

1)ZooKeeper支持一种Watch操作,Client可以在某个ZNode上设置一个Watcher,来Watch该ZNode上的变化。如果该ZNode上有相应的变化,就会触发这个Watcher,把相应的事件通知给设置Watcher的Client。
2)ZooKeeper中的Watcher是一次性的,即触发一次就会被取消,如果想继续Watch的话,需要客户端重新设置Watcher。

3.常见问题
1)zookeeper负载均衡实现原理
2)zookeeper伪集群具体配置及实现

4.编码实战
5.扩展思考
Zookeeper设计目的

1)一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。
2)可靠性:具有简单、健壮、良好的性能,如果消息m被到一台服务器接受,那么它将被所有的服务器接受。
3)实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据。

4)等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。
5)原子性:更新只能成功或者失败,没有中间状态。
6)顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。

异步Watcher处理

zookeeper的watcher实现原理也挺简单的,就是在zookeeper client和zookeeper server上都保存一份对应的watcher对象。每个zookeeper机器都会有一份完整的node tree数据和watcher数据,每次leader通知follower/observer数据发生变更后,每个zookeeper server会根据自己节点中的watcher事件推送给响应的zookeeper client,每个zk client收到后再根据内存中的watcher引用,进行回调.

6.参考文献
https://blog.youkuaiyun.com/wzk646795873/article/details/79706627

https://blog.youkuaiyun.com/paul_wei2008/article/details/51051943

https://www.cnblogs.com/felixzh/p/5869212.html

7.更多讨论
1)zyq:Zookeeper选主流程是怎么样的?

zhh:服务器启动时选举:每个Server发出一个投票,接受来自各个服务器的投票,处理投票,统计投票,改变服务器状态。

     服务器运行期间:比上边,开头,多了一个环节,改变服务器状态。

2)wyq:SpringCloud Eureka和zookeeper的区别

zhh: Eureka遵循AP原则,zookeeper遵循cp原则,C:一致性,A:可用性,P:分区容错性

3)hs:是否每次节点变化的通知都能收到?原因?

hs: 如果节点数据的更新频率很高的话,不能。原因在于:当一次数据修改,通知客户端,客户端再次注册watch,在这个过程中,可能数据已经发生了许多次数据修改,因此,千万不要做这样的测试:”数据被修改了n次,一定会收到n次通知”来测试server是否正常工作。

(一)Tushare Pro教程:股票基本数据接口  一直使用tushare作数据源,这里开个教程大家一起学习。 一、介绍        tushare是一个python股票数据源,现已升级到tushare pro版本,新版本在数据稳定性和获取速率上大幅提升。与wind、东财等收费数据源相比,tushare pro算是金融数据界的良心之作,其为从事金融工程、量化研究等方向的同学们提供了便利。tushare pro还有一点突出的特色就是已经将股票... 阅读详情

相关推荐

保姆级教程:用Cesium的Primitive API实现火箭发射全流程动画(含代码避坑)

本文详细介绍了如何使用Cesium的Primitive API实现火箭发射全流程动画,包括模型控制、关节动画和精细时序管理。通过实战代码示例和性能优化技巧,帮助开发者高效构建高复杂度航天仿真系统,显著提升三维可视化效果与运行效率。

weixin_42565652的博客 212

Zookeeper简单使用

zookeeper的简单使用

qq_51552268的博客 3359

AD创建属于自己的元件库(详细)

我今天开始学习AD2022,但是我想自己创建属于自己的元件库,但是奈何找了好多教程就是随便几句话就把我打发走了,弄了一天都没搞定(也许是我比较菜),所以现在乱懂了,自己写一个属于我们自己小白的教程,希望有用吧哈哈我比较偷懒,直接使用嘉立创上画好的元件导入,和我们自己创建自己画的步骤其实都一样。

qq_33591173的博客 2万+

Zookeeper-使用篇

zookeeper+dubbo远程调用

qq_56571862的博客 2931

全网最详细单细胞保姆级分析教程(一) ---pbmc

通过观察热图,可以了解不同细胞在主成分上的分布情况,以及主成分与细胞特征之间的关系。数据归一化是数据分析中的常见步骤,旨在消除数据集中不同特征之间的量纲差异,并使它们在相同的尺度上进行比较。函数会根据指定的主成分维度计算数据点之间的距离,并找到每个数据点的邻居。函数会根据数据点之间的相似性将其分组到不同的聚类中。数据缩放是数据分析中的常见步骤,旨在将数据的特征值调整到相似的范围,以避免某些特征对分析结果的过度影响。通过可视化维度载荷,可以了解哪些特征对主成分的形成起到了重要作用,以及不同特征之间的相关性。

ZxVSaccount的博客 6704

4D 毫米波雷达:智驾普及的新路径(一)

总体而言,4D 毫米波雷达具有更佳的探测能力,更高的分辨率和精度,在人工智能技术的加持下,能够实现更加智能化的感知和跟踪,从而为自动驾驶、智能交通等领域提供更加可靠的数据支持。博世的第五代引入了俯仰维度,但其角度分辨率较差,且最大探测距离为。车载毫米波雷达的尺寸受限,我们认为通过算法的优化、天线内置等方式可以在保障性能的前提下,压缩尺寸,便于车企进行灵活的设计安装。在物理设计、天线性能设计、电连接、封装工艺和材料、散热处理、可靠性与自动化测试等方面进行持续优化,推出可大规模量产的高性能毫米波雷达解决方案。

奔袭的算法工程师 3953

ZooKeeper怎么用?一口气教会你

直接干货,后续讲解!!! 使用教程: 第一步: 创建data目录 命令:cd zookeeper (进入zookeeper目录) 命令:mkdir data 第二步: 修改conf/zoo.cfg 命令:cd conf (进入conf目录) 命令:cp zoo_sample.cfg zoo.cfg(复制zoo_sample.cfg,文件名为zoo.cfg)##目的是为了保留原文件不至于改错了以后没有原文件可以参考修改回来 第三步: 命令:vim zoo.cfg (修改zoo

weixin_46816552的博客 2480

基于Python的雪球网投资组合数据爬取与分析实战:从入门到精通

在当今数字化投资时代,数据已成为投资者最重要的资产之一。雪球网作为中国领先的投资社交平台,汇聚了大量优质的投资组合数据,这些数据对于量化投资研究和个人投资决策具有重要价值。本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的雪球网投资组合爬虫,并深入分析获取的数据。投资组合持仓明细及变动历史投资收益率曲线与风险指标投资者操作策略与调仓频率热门行业与个股关注度。

2201_76125261的博客 920

Zookeeper基础和简单使用

是Apache Zookeeper 的 Java客户端库原生javaapiZkClientCurator:目的是为了简化Zookeeper客户端的使用。

YSecret_Y的博客 1421

基石篇:多模态数据工程导论与核心概念

多模态数据工程不是写Python脚本处理几张图片,而是设计并构建一套系统,来规模化地生产高质量、可追溯、符合合规要求的模型就绪数据。本文将为你建立正确的数据工程思维框架,明确其在多模态AI生态中的战略地位,并为后续的深入学习奠定坚实基础。

jiaquan3011的博客 627

华为OD机试真题 新系统2026-04-01 Python&JS【计算数列位置N的值】

如果其前面的M个元素中,存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之如果其前面的M个元素中,不存在值相同的元素,则该位置上的数值等于前面M个数中最大的数值与最小的数值之差;1、输入M、N两个数,则按照以下规则形成一个数列;两个整数,用逗号分割,分别表示M和N。一个整数,表示数列第N个位置上的数值。2、数列的前M个元素的值为1到M;请计算该数列第N个位置上的数值。N取值范围:1<= N<=50。M取值范围:3<=M<=10。

MISAYAONE的博客 3196

Zookeeper——Zookeeper简单使用

在配置的各集群中使用zkServer.sh就可以开启集群,然后随便选择一台机器使用zkCli.sh开启zookeeper客户端 在客户端中输入help可以看到所有zookeeper支持的命令 下面列举几个常用命令 stat:stat后面跟上路径,可以列举出当前目录的状态 ls: 跟Linux中的ls一样,只不过zookeeper只支持绝对路径,所以在zookeeper中显示路径内容,要写全部路...

Stay Hungry Stay Foolish 620

模型训练篇 | 手把手教你使用ResNet训练自己数据集和推理,ResNet50通用物体分类识别,含完整代码和数据集,全网最详细教程

手把手教你使用ResNet训练自己数据集和推理,ResNet50通用物体分类识别,含完整代码和数据集,全网最详细教程。本篇文章将带你学习 ResNet50 模型构建、ResNet50训练自己数据集、数据集处理、推理和验证、模型剪枝与模型改进等。 本篇教程适配各种分类识别任务,可以说是一个通用的教程,只需修改自己的数据集即可完成自己领域的任务和系统实现。

在职AI算法工程师,擅长计算机视觉,YOLO目标检测、分割等,擅长web、pyqt界面可视化,好内容持续更新中,来这里跟大家一起学习,共同进步 719

java zookeeper 使用_java 中 zookeeper简单使用

一、zookeeper的基本原理数据模型,如下:ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称做一个ZNode。每个ZNode都可以通过其路径唯一标识,比如上图中第三层的第一个ZNode,它的路径是/app1/c1。在每个ZNode上可存储少量数据(默认是1M, 可以通过配置修改,通常不建议在ZNode上存储大量的数据),这个特性非常有用。另外,每个Z...

weixin_42514222的博客 4153

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ZooKeeper简单使用

ZooKeeper简单使用 ZooKeeper简单使用 1、ZooKeeper简介 2、ZooKeeper能做什么 3、ZooKeeper核心 3.1、ZooKeeper安装 3.2、ZooKeeper角色 3.3、ZooKeeper节点类型 3.4、Java操作ZooKeeper 4、ZooKeeper简单应用 4.1、数据发布/订阅 4.2、命名服务 4.3、分布式锁 ...

帕布酱 1190

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

ZooKeeper的简单使用

1解压 tar -zxvf zookeeper-3.4.10.tar.gz 2 修改配置文件 进入解压后的目录中,进入conf目录,打开zoo_sample.cfg。需要修改的是里面的datadir,zk节点上的数据最终就是存到这个目录中的。我们可以自定义这个目录。 如:将其修改成:(在解压后的目录中新建一个data目录) dataDir=/home/ubuntu/tool/zookeeper-3.4.10/data 3 zk也是cs模型 在zoo_sample.cfg中可以看到,他默认工作在2181端

luseysd的博客 3912

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

zookeeper简单使用

zookeeper的简单使用 介绍 ZooKeeper是一种分布式协调服务,用于管理大量主机。在分布式环境中协调和管理服务是一个复杂的过>>程。ZooKeeper通过其简单的体系结构和API解决了这个问题。ZooKeeper允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式性质。 ZooKeeper框架最初是在“ Yahoo!”构建的,用于以简单而强大的方式访问其应用程...

TimeDeath的博客 308

Zookeeper

此为博主(yjclsx)原创文章,如若转载请标明出处,谢谢! 一、Zookeeper简介 Zookeeper(简称ZK)是一个高效的分布式协调服务,它暴露了一些公用服务,比如命名/配置管理/同步控制/群组服务等。我们可以使用ZK来实现比如达成共识/集群管理/leader选举等。 Zookeeper是一个高可用的分布式管理与协调框架,基于ZAB算法(原子消息广播协议)的实现。该框架能够...

yjclsx的博客 626

Zookeeper的简单使用

Zookeeper 文章目录Zookeeper1、配置参数解读2、分布式安装3、命令行操作4、API使用环境准备创建节点判断节点是否存在获取子节点(不监听)获取子节点(监听) 1、配置参数解读 tickTime =2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒 Zookeeper使用的基本时间,服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一个心跳,时间单位为毫秒。 它用于心跳机制,并且设置最小的session超时时间为两倍心跳时间。(

qq_44002865的博客 720

zookeeper服务搭建及简单使用

zookeeper 是什么    ZooKeeper是一个集中服务,用于维护配置信息,命名,提供分布式同步和提供组服务。所有这些类型的服务都以某种形式被分布式应用程序使用。每次他们实施时,都会有很多工作来解决不可避免的错误和竞争条件。由于实施这些服务的困难,最初的应用程序通常会吝啬,这使得它们在变化和难以管理的情况下变得脆弱。即使正确完成,这些服务的不同实现会导致部署应用程序时的管理复杂性。(摘录...

寂夜了无痕的博客 1万+

Hbase使用独立部署的zookeeper替换内置zookeeper

Hbase使用独立部署的zookeeper,替换内置zookeeper 因为SpringBoot项目集成Hbase时,使用内置的zookeepers时存在连接不上zookeeper的情况,所以我单独部署了zookeeper,替换之后连接没有问题。

saonian0929的博客 1097

ZooKeeper特性与简单使用

本文讲述ZooKeeper的特性及简单使用

虎鲸不是鱼 3818

Zookeeper学习之三-zookeeper简单操作

参考链接 http://www.cnblogs.com/sunddenly/p/4031881.html 1. zookeeper四字命令 zookeeper支持某些四字命令,常用四字命令如下: 命令 描述 conf 打印出服务器相关配置信息(3.3版本引入) ruok ...

235

使用zookeeper API实现zookeeper的基本操作

参考了网上的一个例子,现在程序可以跑了,但是由于时间原因,明天再做深入研究。 这里先记下参考的例子及其代码(https://blog.youkuaiyun.com/u010398771/article/details/82420504) package zookeeper; import java.util.List; import java.util.concurrent.CountDownLatc...

MY BLOG 803
上一篇: mybatis常用标签和动态查询
下一篇: JWT简单介绍
learning__java
博客等级 码龄8年 87粉丝 174原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值