Zookeeper(一) 入门
1.概述:开源的分布式的,为分布式应用提供协调服务的Apach项目
2.工作机制:
Zookeeper是基于观察者模式设计的分布式服务管理框架,它负责存储和管理大家都关心的数据,接受观察者的注册,当数据的状态发生变化时,负责通知已经在Zookeeper上注册的那些观察者。
3.特点:
- 一个Leader,多个Follower组成的集群
- 集群中只要有半数以上结点存活,Zookeeper集群就能正常工作
- 全局数据一致:每个Server保存一份相同的数据副本,Client无论连接到哪个Server,数据都是一致的
- 更新请求顺序进行:来自同一个Client的更新请求按其发送顺序依次执行
- 数据更新原子性:一次数据更新要么成功,要么失败
- 实时性:在一定时间范围内,Client能读到最新数据
4.数据结构:与Unix文件系统类似,树形结构,每个节点称作一个ZNode,每个ZNode默认能存储1MB的数据,每个ZNode都可以通过其路径唯一标识。可以自由的增加、删除ZNode,在一个ZNode下增加、删除子ZNode。
5.应用场景:
- 统一命名服务:主要应用在rpc服务,可以将相应的服务注册在Zookeeper上,服务调用就可以根据其所命名的服务来提供对外服务。
- 统一配置管理:一般要求一个集群中,所有节点的配置信息是一致的,如Kafka集群,对配置文件修改后,希望能够快速同步到各个节点上,可将配置信息写入ZooKeeper上的一个ZNode,各个客户端服务器监听这个ZNode,一旦ZNode中的数据被修改,ZooKeeper将通知各个客户端服务器。
- 统一集群管理:实时监控节点状态变化(将节点信息写入Zookeeper的一个ZNode,监听这个ZNode可获取它的实时状态变化)。
- 服务器节点动态上下线:客户端能实时洞察到服务器上下线的变化。
- 软负载均衡:在ZooKeeper中记录每台服务器的访问数,让访问数最少的服务器去处理最新的客户端请求。
参考:尚硅谷Zookeeper教程