Zookeeper知识点简单梳理(一)

最近在梳理Zookeeper的知识点,学过总会忘,好记性不如烂笔头~以下是zookeeper涉及知识点的简单梳理,点到为止,日后必会完善。
zookeeper是什么
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务。
Zookeeper能做什么?
实现如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master 选举、配置维护,名字服务、分布式同步、分布式锁和分布式队列等功能。
Zookeeper特性:
1、顺序一致性
同一个客户端发起的请求,最后会严格按照顺序应用在zk中。
2、原子性
所有的事务请求在整个集群中所有机器的应用是一致的,所有机器要么都应用,要么都不应用。
3、可靠性
一旦服务器成功应用了某一个事务数据,并且对客户端做了响应,那么这个数据在整个集群中一定是同步并且保留 下来
4、实时性(近实时)
一旦一个事务被成功应用,客户端就能立刻从服务端读取到事务变更后的最新数据状态(一定时间内)

zookeeper安装:

(单机)
下载
解压
copy zoo.cfg
启动客户端 (可以带参数 -server ip:端口)
关闭
(集群模式)
zk集群的三种角色:
leader(接受所有foller的提案请求并统一协调发起提案的投票,负责与所有follwer进行内部数据交换:同步)
follwer(服务且参与投票,与leader交换数据)
observer(服务但不参与投票,与leader交换数据)
客户端的写请求一定会发送到leader
客户端的读请求,会根据算法分配到不同节点上
————–结合zk四大特性去理解读与写的过程。
假如集群有三台机器:
搭建步骤:
1 安装 每台机器安装好zookeeper
2 修改配置文件 :均在zoo.conf中 每一台都要配
id取值范围:1-255,用id来标志该机器在集群中的机器序号
2888是zk的端口号,表示 follower节点与leader节点交换信息的端口号。注意和2181的区别, 2181是客户端请求zk的端口号。只要不和其他端口号冲突就好
3181表示leader选举的端口 只要不和其他端口号冲突就好
server.1= 192.168.11.111:2888:3181
server.2= 192.168.11.112:2888:3181
server.3= 192.168.11.113:2888:3181
3 创建myid
dataDir 数据存储的位置
cd /tmp/zookeeper
在每个服务器的dataDir目录下创建一个myid的文件 每个文件就一行内容 1 , 2 , 3
—-可以通过zoo.conf同步
4 启动zk
可以看zookeeper.out日志
netstat -atlnp |grep 2181
leader选举:
ZAB协议
数据同步+全局通信
observer:一种特殊的 zk节点。不影响写性能去拓展zk.提升读性能。
需要zk集群增加机器时候,因为选举需要半数通过,增加了投票成本,这时候增加observer比较好。 observer不参与投票,只接收投票结果;不属于zk的关键部位,down掉不影响集群。
配置:
1 在zoo.cfg里增加
peerType = observer
2 指定结点为observer
server.1= 192.168.11.111:2888:3181:observer
server.2= 192.168.11.112:2888:3181
server.3= 192.168.11.113:2888:3181
启动之后查看zk节点角色:
sh zkServer.sh status

zoo.cfg配置文件分析:

tickTime = 2000
zk中最小时间单位 默认2000ms
initLimit = 10 10X2000
follwer节点启动后与leader节点同步的时间
syncLimit = 5
表示leader与follwer节点进行心跳检测的最大心跳延时时间。
dataDir 表示zookeeper服务器存储快照文件的目录
dataLogDir 表示配置zookeeper事务日志的存储路径,默认存储在dataDir目录下
clientPort表示客户端与服务端建立连接的端口号:2181

zookeeper常见概念模型:

数据模型:znode –保存数据和挂载子节点
zk的数据模型和文件系统类似,每一个节点成为znode.znode是zk中最小的数据单元,每一个znode上都可以保存数据和挂载子节点。从而构成一个层次化的属性结构
持久化节点:创建后会一直存在zk服务器上,直到主动删除
持久化有序节点:每个节点都会为它的一级子节点维护一个顺序
临时结点:临时节点的生命周期和客户端的会话(客户端与zk建立连接)保持一致。当客户端会话失效。该节点自动删除。
临时有序节点:在临时节点上多了一个顺序性特性。

zookeeper的客户端使用:
ls 查看节点
常见命令操作:
create [-s] [-e] path data acl
-s 是否有序节点 如:nodes0000000008
-e 是否临时节点
一定要携带完整路径 /开头
get path [watch]
获得指定path的信息
set path data [version]
修改指定结点的值
delete path [version]
注意删除要从底往上删除

version表示一个乐观锁 dataversion
数据库里面有一个version字段去控制数据行的版本号

stat信息:
cversion = 0 子节点的版本号
aclversion=0 表示acl的版本号,修改节点权限
dataversion =1 表示的是当前节点数据的版本号

czxid 节点被创建时的事务id
mzxid 节点最后一次被更新的事务id
pzxid 当前节点下的子节点最后一次被修改事的事务id

ctime 创建时间
mtime 修改时间

ephemeralOwner = 0X0 创建临时节点的时候,会有一个sessionId.该值存储的就是这个sessionID
dataLength = 3 数据值长度
mumChildren = 0 子节点数

Watcher
zk提供了分布式数据发布/订阅 ,zookeeper允许客户端向服务端注册一个监听。当服务器端的节点触发指定事件的时候会出发wather..服务会向客户端发送一个
事件通知。 Znode发生变化(Znode本身的增加,删除,修改,以及子Znode的变化)可以通过Watch机制通知到客户端。
watcher的通知是一次性的,一旦触发一次通知后,该watcher就会失效
ACL
zk提供控制节点访问权限的 功能,用于有效的保证zk中的数据的安全性,避免误操作而导致系统出现重大事故
CREAT/READ/WRITE/DELETE/ADMIN
znode的ACL是没有继承关系的,是独立控制的

zookeeper
1 java api使用:
导入jar包 org.apache.zookeeper
2 zkclient
3 curator

以上内容均点到为止,以后有时间会细细完善。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值