Zookeeper学习

准备学习dubbo,先学习下zookeeper

注册监听,保管用户提交的数据
可以提供分布式协调服务
1.统一名称服务(告诉调用方服务方的名称和ip)
2.配置管理(solr)
3。分布式锁 (在同一时刻是能有1个请求实例)
/locks/randomuuid 每台服务器写自己的uuid
扫描locks下的所有 uuid 找最小的 ,最小的拿到锁
访问完成后 删除自己uuid

这里写图片描述

zookeeper集群中的服务器角色有3种
leader,follower,observer

ticktime //心跳时间
initLimit //启动初始化的时间 10个心跳
syncLimit // leader发送请求 5个心跳
dataDir 数据目录
clientPort 客户端端口
server.1 http://192.169.0.1 2888:38888列表 选举 ,通信
server.2 服务列表
server.3 服务列表

echo 1 > data/myid
scp -r xxx/ xx/ 分发
zookeeper中的数据结构
zookeeper中保管数据使用的是树状结构
zookeeper的目录树中,每一个节点都叫做一个znode

配置详解

名称说明备注
ticktimeZk的计量时间的基本单位时间,单位是毫秒。3.4.6默认是2000比如session超时的时间是,2-20倍的ticktime,具体多少倍由client传递一个初始值和server进行协商;除此以外Follower与server之间的心跳是synclimit个ticktime时间,client与server,Follower与leader之间的连超时、读超时、发ping间隔(f-l是1/2个)都是以ticktime为单位的
dataDir存储快照文件目录如果没有配置dataLogDir ,那么事务日志也会存放在dataDir
clientPort一般2181提供client读写服务的端口
dataLogDir用于配置Zookeeper服务器存储事务日志文件的目录Zk每次写操作都会进行事务日志文件的写入(只在恢复时读),所以选择高性能磁盘至关重要,一定不能和存快照的dataDir放在一个磁盘块上,因为快照生成会极大的使用io资源,从而影响到事务日志文件的写入
initLimit数据同步阶段leader允许Follower多少个ticktime时间完成初始化过程。默认10根据集群规模相应增大这个值
syncLimit默认5,用于配置leader和Follower直接的心跳检测最多忍受多少个ticktime时间得不到响应;以及最多忍受多少次ticktime得不到proposal ACK的响应如果部署的网络环境比较差,可以调大这个数
snapCount默认100000Logcount=snapCount/2+random(snapcount/2)配置写入logcount个事务日志重新生成一个快照,生成快照时下一次事务到来时,事务日志也会重新创建一个。之所以用随机数为了避免所有Zk server同时执行快照生成操作导致造成集群大规模网络延迟,snapcount要和下面的preAllocaSize对应设置,由于事务日志是预分配大小的,不够的时候会自动扩容,为了避免每次扩容,将snapcount*平均每个事务大小稍微小于preAllocSize是最佳。
preAllocSize单位KB,默认是65535,用于配置Zookeeper事务日志文件预分配的磁盘大小默认64M.预分配可以省去扩容的开销。和snapcount一起使用,比如我们设置snapcount是500,最大一个事务是1K,那么我们将preAllocSize设置成500
minSessionTimeout默认2倍ticktime如果客户端设置的超时时间不在该范围内,那么就会被强制设置为最大值或者最小值
maxSessionTimeout默认20倍ticktime如果客户端设置的超时时间不在该范围内,那么就会被强制设置为最大值或者最小值
maxClientCnxns单台ip的client与zk server所能建立的最大连接数不会限制client总数,仅仅限制单台所建立的连接,一个Zookeeper实例只建立一个连接到zk server
jute.maxbuffer用于配置单个znode节点所能存储的最大数据量,默认是4096 * 1024,4M系统属性配置,如果想改这个默认值,client和server的系统配置都要增加这个属性
server.id=host:port:portid即myid文件存放的serverId,host就是服务器ip,第一个port是Follower和Leader进行运行时通信和数据同步所用的端口,第二个是进行leader选举过程中使用的投票端口比如三台,例如server.1=192.168.137.10:2888:3888;server.2=192.168.137.11:2888:3888;server.3=192.168.137.12:2888:3888该配置指定了集群机器数量,比如左边例子中配置了3台,那么quorum数量就是2,超过1台机器出现故障,整个服务将不可用
forceSync系统属性(zookeeper.forceSync),默认yes配置zk服务器是否在事务提交的时候,将日志同步强制刷到磁盘。默认情况下,当事务不繁忙的时候(poll为null),会将已经写到到filechannel事务记录批量刷入磁盘。如果设置为false,那么将不调用force方法,即不能保证内存数据刷入磁盘。如果为no,那么不能保证每次提交事务都写入磁盘(系统缓存相关)
GlobalOutstandingLimit系统属性(zookeeper.globalOutstandingLimit)用于配置Zookeeper服务器最大请求堆积数量。防止资源耗尽限制请求数,默认是1000
leaderServes系统属性(zookeeper.leaderServes)默认yes情况下Leader可以接收和处理来自client的所有读写请求,但是为了让leader专注于分布式协调,可以设置为no
CntTimeout系统属性(zookeeper.cnxTimeout)默认5000,单位毫秒,该参数用于配置在leader选举时,各个服务建立连接的超时时间
autopurge.snapRetainCount默认3,Zoo.cnf配置属性用于配置自动清理时候需要保留的快照数据文件数量和对应的事务日志文件
Autopurge.purgeInterval默认0,zoo.cnf配置配置该属性大于0,即开启了一个线程定时清理日志文件

这里写图片描述
搭建:
修改 zoo_sample.cfg -> zoo.cfg
vi zoo.cfg
修改data路径
dataDir:xxxx

在项目下创建data目录
mkdir data
创建编号
echo “1” >myid
启动
./zkServer.sh start
客户端连接
./zkCli.sh

指令
显示根目录
ls /
创建znode
create /xxx “xxx”
获得数据
get /xxxx
删除节点(没有子节点)
delete /
删除节点(可以有子节点)
rmr /

分布式锁
create -s(序列) -e(临时) /parnent/node1
创建临时序列节点
监听孩子节点变化
选举(非zookeeper的选举)也相同

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值