Zookeeper学习笔记1-概述和安装与部署

1. 概述

zookeeper是yahoo开发的,用于分布式中一致性处理的框架。最初其作为研发Hadoop时的副产品。由于分布式系统中一致性处理较为困难,其他的分布式系统没有必要 费劲重复造轮子,故随后的分布式系统中大量应用了zookeeper,以至于zookeeper成为了各种分布式系统的基础组件,其地位之重要,可想而知。著名的hadoop、kafka、dubbo 都是基于zookeeper而构建。

1.1 特性

1) 树形节点存储
2) 顺序节点
3) ZAB算法
4) sesseion

1.2 应用

1) 同一时刻多台机器创建同一个节点,只有一个会争抢成功。利用这个特性可以做分布式锁。
2) 临时节点的生命周期与会话一致,会话关闭则临时节点删除。这个特性经常用来做心跳,动态监控,负载等动作。
3) 顺序节点保证节点名全局唯一。这个特性可以用来生成分布式环境下的全局自增长id。

2. 安装与部署

2.1 支持

生产环境下不可用单机模式,这是由于无论从系统可靠性还是读写性能,单机模式都不能满足生产的需求。下表分别对各种操作系统的支持。

系统 开发环境 生产环境
Linux 支持 支持
Solaris 支持 支持
FreeBSD 支持 支持
Windows 支持 不支持
MacOS 支持 不支持

2.2 下载

从zookeeper官方网下载最新文档版本: https://zookeeper.apache.org/releases.html
是一个压缩文件:zookeeper-3.4.13.tar.gz。

2.3 安装

Zookeeper并不需要安装,只需要将解压包即可,运行必须安装java的运行环境jre。
解压后的目录文件如下:
在这里插入图片描述
bin目录
zk的可执行脚本目录,包括zk服务进程,zk客户端,等脚本。其中,.sh是Linux环境下的脚本,.cmd是Windows环境下的脚本。
conf目录
配置文件目录。zoo_sample.cfg为样例配置文件,需要修改为自己的名称,一般为zoo.cfg。log4j.properties为日志配置文件。
lib
zk依赖的包。
contrib目录
一些用于操作zk的工具包。
recipes目录
zk某些用法的代码示例

2.4 配置

Zookeeper的配置文件在conf目录下面的zoo.cfg。解压下来的是没有此文件的。可以使用zoo_sample.cfg文件重命名。以下是配置参数:

属性 默认值 说明
tickTime 2000 时长单位为毫秒,为zk使用的基本时间度量单位。例如,1 * tickTime是客户端与zk服务端的心跳时间,2 * tickTime是客户端会话的超时时间。 tickTime的默认值为2000毫秒,更低的tickTime值可以更快地发现超时问题,但也会导致更高的网络流量(心跳消息)和更高的CPU使用率(会话的跟踪处理)。
clientPort 2181 zk服务进程监听的TCP端口,默认情况下,服务端会监听2181端口。
dataDir /tmp 无默认配置,必须配置,用于配置存储快照文件的目录。如果没有配置dataLogDir,那么事务日志也会存储在此目录。
dataLogDir 这个操作将管理机器把事务日志写入到“ dataLogDir ”所指定的目录,而不是“ dataDir ”所指定的目录。这将允许使用一个专用的日志设备并且帮助我们避免日志和快照之间的竞争。
initLimit 10 LF初始通信时限。集群中的follower服务器(F)与leader服务器(L)之间 初始连接 时能容忍的最多心跳数(tickTime的数量)。此配置表示,允许follower(相对于leader而言的“客户端”)连接并同步到leader的初始化连接时间,它以tickTime的倍数来表示。当超过设置倍数的 tickTime 时间,则连接失败。参数设定了允许所有跟随者与领导者进行连接并同步的时间,如果在设定的时间段内,半数以上的跟随者未能完成同步,领导者便会宣布放弃领导地位,进行另一次的领导选举。如果zk集群环境数量确实很大,同步数据的时间会变长,因此这种情况下可以适当调大该参数。默认为10
syncLimit 5 LF同步通信时限。集群中的follower服务器(F)与leader服务器(L)之间 请求和应答之间能容忍的最多心跳数(tickTime的数量)。此配置表示,leader与follower之间发送消息,请求和应答时间长度。如果 follower在设置的时间内不能与leader进行通信,那么此follower将被丢弃。参数设定了允许一个跟随者与一个领导者进行同步的时间,如果在设定的时间段内,跟随者未完成同步,它将会被集群丢弃。所有关联到这个跟随者的客户端将连接到另外一个跟随着。
maxClientCnxns 这个操作将限制连接到 ZooKeeper 的客户端的数量,限制并发连接的数量,它通过 IP 来区分不同的客户端,即一个IP最多能有多少个连接,0表示无限制
minSessionTimeout 4000 最小的会话超时时间。其中,最小的会话超时时间默认情况下为2倍的tickTme 时间,当客户端设置的超时时间小于此值,则会话超时时间为此值。
maxSessionTimeout 40000 最大的会话超时时间,最大的会话超时时间默认情况下为20倍的会话超时时间,当客户端设置的超时时间大于此值,则会话超时时间为此值。

2.5 启动

使用命令:./zkServer.sh start
如果需要前端显示日志,可使用:./zkServer.sh start-foreground

停止使用:./zkServer.sh stop

扫描二维码关注公众号,回复: 6784537 查看本文章

2.6 客户端

客户端连接使用:./zkCli.sh –server ip:port
也可以使用java或者c的API连接

猜你喜欢

转载自blog.csdn.net/linwu_2006_2006/article/details/95060681