windows中安装zookeeper

本文详细介绍了Zookeeper的安装、配置、应用场景及其实现示例,包括配置文件管理、集群管理、同步锁、Leader选举、队列管理等,旨在帮助开发者掌握Zookeeper在分布式应用中的核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 Zookeeper 分布式服务框架是 Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。本文将从使用者角度详细介绍 Zookeeper 的安装和配置文件中各个配置项的意义,以及分析 Zookeeper 的典型的应用场景(配置文件的管理、集群管理、同步锁、Leader 选举、队列管理等),用 Java 实现它们并给出示例代码。

ZooKeeper 是一个为分布式应用所设计的分布的、开源的协调服务。分布式的应用可以建立在同步、配置管理、分组和命名等服务的更高级别的实现的基础之上。 ZooKeeper 意欲设计一个易于编程的环境,它的文件系统使用我们所熟悉的目录树结构。 ZooKeeper 使用Java 所编写,但是支持 Java  C 两种编程语言。

众所周知,协调服务非常容易出错,但是却很难恢复正常,例如,协调服务很容易处于竞态以至于出现死锁。我们设计 ZooKeeper 的目的是为了减轻分布式应用程序所承担的协调任务。

ZooKeeper是一个高可用、高可靠的协同工作系统,分布式程序可以用ZooKeeper保存并更新关键共享状态。

zookeeper是针对分布式应用的分布式协作服务,它的目的就是为了减轻分布式应用从头开发协作服务的负担。

Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护 和命名服务等。Zookeeperhadoop的一个子项目,其发展历程无需赘述。在分布式应用中,由于工程师不能很好地使用锁机制,以及基于消息的协 调机制不适合在某些应用中使用,因此需要有一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。Zookeeper的目的就在于此。

zookeeper的下载地址:http://www.apache.org/dyn/closer.cgi/zookeeper/

下载好后的zookeeper解压到一个地方目录大概是这样的




 F:\zookeeper-3.3.6 的目录


2014/09/16  17:04    <DIR>          .
2014/09/16  17:04    <DIR>          ..
2014/09/16  16:10    <DIR>          bin
2012/07/29  14:23            59,687 build.xml
2012/07/29  14:23            52,566 CHANGES.txt
2014/09/16  17:06    <DIR>          conf
2014/09/16  16:10    <DIR>          contrib
2014/09/16  17:09    <DIR>          data
2014/09/16  16:10    <DIR>          dist-maven
2014/09/16  16:10    <DIR>          docs
2012/07/29  14:23             2,415 ivy.xml
2012/07/29  14:23             1,932 ivysettings.xml
2014/09/16  16:10    <DIR>          lib
2012/07/29  14:23            11,358 LICENSE.txt
2014/09/16  17:04    <DIR>          log
2012/07/29  14:23               165 NOTICE.txt
2012/07/29  14:23             1,578 README.txt
2014/09/16  16:10    <DIR>          recipes
2014/09/16  16:10    <DIR>          src
2012/07/29  14:23         1,031,338 zookeeper-3.3.6.jar
2012/07/29  14:25               198 zookeeper-3.3.6.jar.asc
2012/07/29  14:23                33 zookeeper-3.3.6.jar.md5
2012/07/29  14:23                41 zookeeper-3.3.6.jar.sha1
              11 个文件      1,161,311 字节
              12 个目录 94,507,941,888 可用字节


进到conf目录下复制一个名字为zoo_sample.cfg的文件并修改名字为zoo.cfg

添加如下内容

# 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 isstored.  镜像数据位置
dataDir=F:\\zookeeper-3.3.6\\data
#日志位置
dataLogDir=F:\\zookeeper-3.3.6\\log
# the port at which the clients will connect 客户端连接的端口
clientPort=2181


这里简单的说明一下,这些配置只是做一个简单的测试并未做分布式处理

dataDir就是zookeeper的镜像数据位置,这个文件需要用户自行设置博主暂时将其放在zookeeper的子目录下的data文件中

dataLogDir就是zookeeper的日志记录位置,这个文件同样需要用户自行设置博主暂时将其放在zookeeper的子目录下log文件中


做完上面的这些后就可以启动zookeeper了启动的方式就是执行zookeeper/bin目录下的zkServer.cmd文件即可

启动完成后就可以重启一个命令窗口连接zookeeper了

连接zookeeper的命令同样是bin目录下的zkCli.sh –server 127.0.0.1:2182

连接成功后就可以输入相关的命令了

刚开始由于我们不知道输入什么命令zookeeper会给出一个help

 connect host:port
 get path [watch]
 ls path [watch]
 set path data [version]
 delquota [-n|-b] path
 quit
 printwatches on|off
 create [-s] [-e] path data
 stat path [watch]
 close
 ls2 path [watch]
 history
 listquota path
 setAcl path acl
 getAcl path
 sync path
 redo cmdno
 addauth scheme auth
 delete path [version]
 setquota -n|-b val path


ls(查看当前节点数据),
ls2(查看当前节点数据并能看到更新次数等数据) ,
create(创建一个节点) ,
get(得到一个节点,包含数据和更新次数等数据),
set(修改节点)
delete(删除一个节点)

通过上述命令实践,我们可以发现,zookeeper使用了一个类似文件系统的树结构,数据可以挂在某个节点上,可以对这个节点进行删改。另外我们还发现,当改动一个节点的时候,集群中活着的机器都会更新到一致的数据。 


zookeeper的数据模型
在简单使用了zookeeper之后,我们发现其数据模型有些像操作系统的文件结构,结构如下图所示



(1)     每个节点在zookeeper中叫做znode,并且其有一个唯一的路径标识,如/SERVER2节点的标识就为/APP3/SERVER2
(2)     Znode可以有子znode,并且znode里可以存数据,但是EPHEMERAL类型的节点不能有子节点
(3)     Znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本。
(4)     znode 可以是临时节点,一旦创建这个 znode 的客户端与服务器失去联系,这个 znode 也将自动删除,Zookeeper 的客户端和服务器通信采用长连接方式,每个客户端和  服务器通过心跳来保持连接,这个连接状态称为 session,如果 znode 是临时节点,这个 session 失效,znode 也就删除了
(5)     znode 的目录名可以自动编号,如 App1 已经存在,再创建的话,将会自动命名为 App2 
(6)     znode 可以被监控,包括这个目录节点中存储的数据的修改,子节点目录的变化等,一旦变化可以通知设置监控的客户端,这个功能是zookeeper对于应用最重要的特性,通过这个特性可以实现的功能包括配置的集中管理,集群管理,分布式锁等等。
  

1. 用户与身体信息管理模块 用户信息管理: 注册登录:支持手机号 / 邮箱注册,密码加密存储,提供第三方快捷登录(模拟) 个人资料:记录基本信息(姓名、年龄、性别、身高、体重、职业) 健康目标:用户设置目标(如 “减重 5kg”“增肌”“维持健康”)及期望周期 身体状态跟踪: 体重记录:定期录入体重数据,生成体重变化曲线(折线图) 身体指标:记录 BMI(自动计算)、体脂率(可选)、基础代谢率(根据身高体重估算) 健康状况:用户可填写特殊情况(如糖尿病、过敏食物、素食偏好),系统据此调整推荐 2. 膳食记录与食物数据库模块 食物数据库: 基础信息:包含常见食物(如米饭、鸡蛋、牛肉)的名称、类别(主食 / 肉类 / 蔬菜等)、每份重量 营养成分:记录每 100g 食物的热量(kcal)、蛋白质、脂肪、碳水化合物、维生素、矿物质含量 数据库维护:管理员可添加新食物、更新营养数据,支持按名称 / 类别检索 膳食记录功能: 快速记录:用户选择食物、输入食用量(克 / 份),系统自动计算摄入的营养成分 餐次分类:按早餐 / 午餐 / 晚餐 / 加餐分类记录,支持上传餐食照片(可选) 批量操作:提供常见套餐模板(如 “三明治 + 牛奶”),一键添加到记录 历史记录:按日期查看过往膳食记录,支持编辑 / 删除错误记录 3. 营养分析模块 每日营养摄入分析: 核心指标计算:统计当日摄入的总热量、蛋白质 / 脂肪 / 碳水化合物占比(按每日推荐量对比) 微量营养素分析:检查维生素(如维生素 C、钙、铁)的摄入是否达标 平衡评估:生成 “营养平衡度” 评分(0-100 分),指出摄入过剩或不足的营养素 趋势分析: 周 / 月营养趋势:用折线图展示近 7 天 / 30 天的热量、三大营养素摄入变化 对比分析:将实际摄入与推荐量对比(如 “蛋白质摄入仅达到推荐量的 70%”) 目标达成率:针对健
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值