概述
ZooKeeper是一个开源的分布式的,为分布式应用提供协调服务的Apache项目。
ZooKeeper字面意思:动物园管理员,把服务器比作是动物,它作为一个管理者的身份,监控着从它上面注册过的服务,客户端可以通过ZooKeeper来了解服务的运行情况。
从设计模式来看,ZooKeeper是一个基于观察者模式的分布式服务管理框架,负责存储和管理数据,接收注册和观察,一旦数据状态发生变化,ZooKeeper就会通知在Zookeeper上注册过的观察者做出相应的反应。
所以说,ZooKeeper=文件系统+通知机制。
首先,服务启动后,去ZooKeeper上注册信息,告知ZooKeeper,我是一台服务器,我要把我的服务状态告知你。
与此同时,客户端也可以链接ZooKeeper,查看在ZooKeeper上注册过的服务器信息。
如果服务端有机器宕机或者重新上线,监听的客户端立刻就能感知到,做出相应的反应。
特点
- 在ZooKeeper集群里,有一个Leader和多个Follower
- 集群中只要有半数以上结点存活,ZooKeeper集群就可以正常服务
- 注册到ZooKeeper的Server保存一份相同的数据,Client去任何一个Server获取数据,拿到的数据都是一致的
- ZooKeeper在处理来自Client的请求时,是顺序处理的,来自同一个Client的请求,按照先后顺序处理
- 保证数据更新的原子性,要么成功,要么失败
- 在一定时间范围内,Client可以获取到最新的数据
数据结构
使用Client连接ZooKeeper后,就会发现,ZooKeeper里的结构和Linux的文件系统结构类似,也有根目录,根目录下有许多的分支,可以看做是一棵树,每个结点称作一个ZNode,每个ZNode可以存储1MB的数据,通过其路径作为唯一标识。
应用场景
ZooKeeper的应用场景:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等。
下载地址
访问ZooKeeper的首页,找到Download位置下载。目前3.7.0是最新版本,3.6.3是最新稳定版,所以,这里下载3.6.3吧。