zookeeper

zookeeper 是一个开源的分布式的,为分布式应用提供协调服务的apache项目。
zookeeper 是一个基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,zookeeper就将负责同志已经在zookeeper上注册的那些观察者做出相应的反应。
特点:
1)zookeeper集群:一个领导(leader),多个随从(follower)组成集群。
2)集群特点:集群中只要有半数以上节点存活,zookeeper集群就能正常服务
3)全局数据一致:每个server保存一份相同的数据副本。client无论连接哪个server,数据都是一致的
4)更新请求顺序进行:来自同一个client的更新请求按其发送顺序依次执行
5)数据更新原子性,一次数据更新要么成功要么失败。
6)实时性,在一定范围内,client能读到最新数据
数据结构
1)zookeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称作一个ZNode,每一个ZNode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识。
应用场景
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务节点动态上下线、软负载均衡等。
统一命名服务:在分布式环境下,经常需要对应用/服务进行统一命名,便于识别 。 例:IP不容易记住,而域名容易记住。
统一配置管理:
(1)分布式环境下,配置文件同步非常常见,一般要求一个集群中,所有节点的配置信息是一致的,比如kafka集群。对配置文件修改后,希望能够快速同步到各个节点上。
(2)配置管理可以交由zookeeper实现。可将配置信息写入zookeeper上的一个znode。各个客户端服务器监听这个znode。
(3)一旦znode中的数据被修改,zookeeper将通知各个客户端服务器。
统一集群管理
(1)分布式环境中,实时掌握每个节点的状态是必要的。可以根据节点实时状态做出一些调整。
(2)zookeeper可以实现实时监控节点状态变化。可以将节点信息写入zookeeper上的一个znode。监听这个znode可获得它的实时状态变化。
服务器动态上下线:客户端能实时洞察到服务器上下线的变化
软负载均衡:在zookeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求
服务器动态上下线:客户端能够实时洞察到服务器上下线的变化
软负载均衡:
在zookeeper中记录每台服务器的访问数,让服务数最少的服务器去处理最新的客户端请求
zookeeper下载安装
1、下载地址:https://zookeeper.apache.org/
2、安装:本地模式安装
1)安装jdk
2)拷贝zookeeper安装包到linux系统下
3)解压到指定文件夹下在这里插入图片描述 3、修改配置文件
1)将opt/modele下的conf中的zoo_sample.cfg修改为zoo.cfg
mv zoo_sample.cfg zoo.cfg
2)打开zoo.cfg 修改dataDir路径:
vim zoo.cfg 编辑
创建 文件夹 mkdir zkData
修改dataDir路径在这里插入图片描述配置参数解读
tickTime:设置心跳 -每隔心跳的秒数发送一次确认
4、启动服务器在这里插入图片描述 查看启动 jps
查看状态
在这里插入图片描述5、启动客户端
在这里插入图片描述6、zookeeper操作
ls / 获取路径下数据
quit 退出客户端
get path 获取节点数据内容
state 节点 获取节点信息
create 节点 信息 创建节点(信息必须有若无信息侧不会创建成功)
在这里插入图片描述
create -e 节点 信息 创建临时节点(信息必须有若无信息侧不会创建成功) 临时节点在客户端关闭之后会删除
create -s 节点 信息 创建带序号的节点 序号0000000001 在这里插入图片描述set 节点 修改信息 在这里插入图片描述get 节点 watch 设置监听 当节点数据修改时会监听到
在这里插入图片描述ls 节点 watch 当节点下的节点数改变会监听到
在这里插入图片描述delete 节点 删除节点
在这里插入图片描述rmr 节点 递归删除
zookeeper 报错调整
jps正常,服务已启动,客户端连接也正常日志未报错
查看状态 ./zkServer.sh status
JMX enabled by default
Using config: /hadoop/zookeeper/bin/…/conf/zoo.cfg
Error contacting service. It is probably not running.
解决方法3.4.1版本
打开zkServer.sh 找到status)
STAT=echo stat | nc localhost $(grep clientPort "$ZOOCFG" | sed -e ‘s/.*=//‘) 2> /dev/null| grep Mode
在nc与localhost之间加上 -q 1 (是数字1而不是字母l)
如果已存在则去掉

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值