ZooKeeper
zookeeper是一个为分布式项目提供协调服务的Apache开源项目,是一个基于观察者模式设计的分布式服务管理框架,负责和存储核心数据,接收观察者的注册并通知注册的观察者,是一种主从模式的管理模式
- zookeeper=文件系统+通知机制
- 分布式类似不同人做不同工作,集成一体,集群类似不同人做同一份工作
- zookeeper是一个leader和多个follower来组成的集群,集群只要有半数以上的节点存货就可以正常工作,通常是奇数台集群,每台服务器都保存一份相同的数据副本,全局数据一致,数据更新要么成功要么都失败,在一定时间范围内可以获取最新数据,具有实时性,按照更新的请求顺序执行
- zookeeper的数据结构(类似于树,每个节点是一个znode)
- 每一个节点默认存储1MB的元数据,每个节点的路径都是唯一的元数据
- 元数据描述的是数据属性的信息,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能
- 常见的应用场景
- 统一命名服务,同一个域名访问多个服务器
- 统一配置管理,某一服务器文件修改同步到其他各台
- 将配置管理交给Zookeeper,写入到Zookeeper的某个节点上,每个客户端监听此节点,一旦节点数据文件被修改,Zookeeper就会通知每个客户端服务器
- 服务器节点上下线
- 软负载均衡,Zookeeper会记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户请求
1. 本地模式安装
- 安装前先安装jdk,拷贝apache-zookeeper-3.6.0-bin.tar.gz到opt目录,解压安装包进行重命名
tar -zxvf apache-zookeeper-3.6.0-bin.tar.gz
mv apache-zookeeper-3.6.0-bin zookeepe
- 配置修改:在/opt/zookeeper/这个目录上创建zkData和zkLog目录; 进入/opt/zookeeper/conf这个路径,复制一份 zoo_sample.cfg 文件并命名为 zoo.cfg
dataDir=/opt/zookeeper/zkData
dataLogDir=/opt/zookeeper/zkLog
- 编辑配置文件 zoo.cfg
dataDir=/usr/zookeeper/zkData dataLogDir=/usr/zookeeper/zkLog # the port at which the clients will connect clientPort=2181 admin.serverPort=8888
- 启动并查看状态:QuorumPeerMain是zookeeper集群的启动入口类,是用来加载配置启动QuorumPeer线程的
./zkServer.sh start jps ./zkServer.sh status
- 启动或退出客户端
./zkCli.sh quit
- 配置文件解读
- tickTime =2000: 通信心跳数,Zookeeper服务器与客户端心跳时间,毫秒数,是服务器之间或服务器与客户端之间维持通信的时间间隔,每隔一个Zookeeper发送一个心跳
- initLimit =10:LF初始通信时限,集群中的follower跟随服务器与leader领导者服务器之间,启动时能容忍的最多心跳数10*2000,如果领导和跟随者没有发出心跳通信,就视为失效的连接,领导者和而跟随者彻底断开
- syncLimit =5:LF同步通信时限,集群启动后,leader和follower的最大响应时间单位,假如响应时间超过syncLimit*
- tickTime =2000: 通信心跳数,Zookeeper服务器与客户端心跳时间,毫秒数,是服务器之间或服务器与客户端之间维持通信的时间间隔,每隔一个Zookeeper发送一个心跳