zookeeper简介

zookeeper简介

一、什么是zookeeper

Apache zookeeper是一种用于分布式应用程序的高性能协调服务,提供一种集中式信息存储服务。
特点:数据存在内存中,类似文件系统的树性结构(文件和目录),高吞吐量和低延时,集群高可靠。
作用:基于zookeeper可以实现腹部是统一配置中心、服务注册中心、分布式锁等功能。
下载:https://archive.apache.org/dist/zookeeper/
解压后在conf目录中复制zoo_sample.cfg重命名为zoo.cfg
启动服务:bin/zkServer.sh start
测试,客户端连接 bin/zkCli.sh -server 127.0.0.1:2181

二、常见指令

ls [/] 获取子节点
create 创建节点
delete 删除节点
exists 测试节点是否存在
get data 从指定节点获取数据
set data 将数据存入节点
get children 查询所有子节点
sync 等待数据进行同步

三、核心概念

1.session

在这里插入图片描述

a.一个客户端连接一个会话,由zk分配唯一会话id;
b.客户端以特定的时间间隔发送心跳,以保证会话有限,tickTime;
c.超过会话时长未收到客户端心跳,则判定客户端挂了(默认2倍tickTime)
d.会话中的请求按照FIFO顺序执行

2.数据模型

a.层次命名空间
类似unix文件系统,以(/)为根
区别:节点可以包含与之关联的数据以及自节点(即文件也是文件夹)
节点的路径总是表示为规范的、绝对的、斜杠分割的路径

b.znode
名称唯一、命名规范
节点类型:持久、顺序、临时、临时顺序
节点数据构成
在这里插入图片描述
C.znode-节点类型
持久节点
create /app1 1234,数据被持久化
临时节点
create -e /app2 233,客户端断开连接时,数据丢失
顺序节点
create -s /app3 4378
临时顺序节点
create -s -e /app4 345

3.watch监听机制

客户端可以在znodes上设置watch,监听znode的变化
两类watch
data watch监听数据变更
child watch监听节点变化
触发watch事件
Created event 触发exists事件
Delete event 触发exists、getData、getChildren
Change evnet 触发exists、getData
Child event 触发getChildren
Watch 重要特性
一次性触发:watch触发后即被删除,要持续监控变化需要持续设置watch
有序性:客户端先得到watch通知后,才会看到变化结果
Zookeeper特性:
顺序一致性:保证客户端操作时按顺序生效的
原子性:更新成功或者失败,没有部分结果
单个系统映象:无论连接到哪个服务器,客户端看到相同的内容
可靠性:数据的变更不会丢失,除非被客户端覆盖修改
及时性:保证系统的客户端当时读取到的数据时最新的

四、Zookeeper典型应用场景

1.数据发布订阅(配置中心)
2.命名服务
3.Master选举
4.集群管理
5.分布式队列
6.分布式锁
1.配置中心

在这里插入图片描述

2.命名服务
如何解决服务A可以动态得到服务B的调用地址?
在这里插入图片描述
3.master选举
在这里插入图片描述
实现原理:
1.多个服务同时去创建master这个临时znode,创建成功的服务器被注册为master(同时监听),创建失败的服务器增加master的watch,当master被删除时可以去抢master
2.所有服务启动时都往servers注册自己的服务信息方便调用
4.分布式队列

在这里插入图片描述

5.分布式锁
在这里插入图片描述

锁缺点:惊群效应,某时刻会有大量线程同时强锁,不适合大并发情况

6.分布式锁2

在这里插入图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值