最近用zookeeper搞了个黑名单系统,把在学习zookeeper的过程看过的资料整理记录一下
一、安装配置
安装:http://zookeeper.apache.org/releases.html 下载最新版本,解压文件即可使用;
解压得到的文件
配置文件位于conf目录下 zoo.cfg,一台服务器使用多个zookeeper服务时,可以设置多个配置文件
调用脚本位于bin目录下
zkCleanup.sh 清除zookeeper数据
zkServer.sh 启动\关闭zookeeper服务 启动命令如zkServer.sh start conf/zoo.cfg zkServer.sh stop conf/zoo.cfg
zkCli.sh zookeeper信息查看器 使用命令 zkCli.sh -server ip:port
二、集群配置
zoo.cfg配置参数说明
tickTime: Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳;
dataDir: Zookeeper 保存数据的目录,默认情况下写数据的日志文件也保存在;
clientPort:Zookeeper服务端口;
集群相关配置
initLimit:服务与集群的初始化连接时最长能忍受多少个心跳时间间隔数,超过initLimit*tickTime数以后,会认定为连接失败;
syncLimit:Leader与Follower之间发送消息,请求和应答时间长度,最长不能超过多少个 tickTime 的时间长度;
server.id=ip:port1:port2 id为服务器编号(唯一),ip是id对应的服务器ip地址也可以使用域名形式(使用域名形式更好),port1为服务端口,port2为有服务宕机时的选举端口;
集群如果宕机数目超过一半以上整个集群就不可用,所以集群的数目最好为奇数;
三、简单介绍
Zookeeper会维护一个具有层次关系的数据结构,它非常类似于一个标准的文件系统,存储数据的地方称为节点;
节点分为永久节点和临时节点,临时节点由client创建,当客户端Session超时后临时节点会消失;
节点可以有子节点,可以保存数据,数据还可以按照版本号进行保存;
补充内容:http://rdc.taobao.com/team/jm/archives/947
四、性能
由于zookeeper的节点更新会同步到磁盘及各个节点,所以zookeeper的性能会受到节点数据大小以及磁盘IO性能的影响(与系统的硬件条件也相关),数据越小,IO性能越高,TPS越高;
参考数据:http://rdc.taobao.com/team/jm/archives/1070
五、监控
淘宝的童鞋开发的zookeeper监控系统 http://rdc.taobao.com/team/jm/archives/1450
简单的对zookeeper进行监控,可以使用shell脚本,调用zookeeper的四字命令,解析返回的内容进行监控,如echo conf|nc localhost 2181;
六、自检恢复
zookeeper的自动宕机重启工具
Daemontools http://cr.yp.to/daemontools.html
SMF http://en.wikipedia.org/wiki/Service_Management_Facility
七、客户端
Zookeeper Client http://rdc.taobao.com/team/jm/archives/1047
Zookeeper的官方客户端功能比较底层,第三方的客户端可以看看Curator
Curator http://www.open-open.com/lib/view/open1327550964655.html
参考资料:
http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeeper/
http://blog.163.com/bdweizhong@yeah/blog/static/963698182012928114335375/