zookeeper特点
1)Zookeeper:一个领导者(leader),多个跟锁着(follower)组成的集群。
2)集群中只要有半数以上节点存活,zookeeper集群就能正常服务。
3)全局数据一致:每个server保存一份相同的数据副本,Client无论连接到哪个server,数据都是一致的。
4)更新请求原子性,一次数据更新要么成功,要么失败。
5)实时性,在一定时间范围内,client能读到最新数据。
数据结构
zookeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每个节点称作一个ZNode.每一个Znode默认能够存储1MB的数据,每个ZNode都可以通过其路径唯一标识
应用场景
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。
1)统一命名服务
2)统一配置管理
3)统一集群管理
4)服务器动态上下线
5)软负载均衡
zookeeper内部原理
- 选举机制(重点)
1)半数机制:集群中半数以上机器存活,集群可用,所以zookeeper适合奇数安装台服务器。
2)zookeeper虽然在配置文件中并没有指定Master和Slaver。但是,zookeeper工作时,是有一个节点作为leader,其他则为follower,leader是通过内部的选举机制临时产生的
3)列子:每个服务器刚进来选自己为leader,投票不成功就开始头给别人(myid数值最大的),只要投票的票数超过半数以上,就自动成为leader,只要leader选出来以后,后面的服务器(比如myid更大的)再进来也不会是leader
监听器原理(重点)
1)首先要有一个main()线程
2)在main线程中创建Zookeeper客户端,这时就会创建两个线程,一个负责网络连接通信(connect),一个负责监听(listener)。
3)通过connect线程将注册的监听事件发送给zookeeper
4)在zookeeper的注册监听列表中将注册的监听事件添加到列表中
5)zookeeper监听到有数据或路径变化,就会将这个消息发送给listener线程
6)listener线程内部调用了process()方法
Zookeeper的部署方式有哪几种?集群中的角色有哪些?集群中最少需要几台机器?
(1)部署方式单机模式、集群模式。
(2)角色:leader ,follower
(3)集群中最少需要机器数:3
Zookeeper的常用命令
ls [path] 查看当前路径包含的节点
ls2 [path] 查看当前节点的详细数据
create /sanguo "jinlian" 创建普通节点
get /sanguo 获得节点的值
create -e /sanguo/wuguo "zhouyu" 创建短暂节点(退出客户端后,该节点自动删除)
create -s /sanguo/weiguo/xiaoqiao "meinv" 创建带序号的节点
set /sanguo/weiguo "simayi" 修改节点数据的值
get /sanguo watch 监听节点的变化
ls /sanguo watch 监听节点子节点变化
delete /sanguo/jin 删除节点
rmr /sangguo/shuguo 递归删除节点
stat /sanguo 查看节点状态