Zookeeper概念
Zookeeper是一个开源的,分布式的项目,是apache的一个项目。
从设计模式的角度理解,Zookeeper是基于观察者模式的。它负责存储大家都关心的数据,然后接受观察者的注册,一旦这些数据发生变化,则会通知已注册的观察者做出相应的反应。
zookeeper=文件系统+通知机制。
Zookeeper特点
1)zookeeper包含了一个领导者(leader)和多个跟随者(follower)。
2)只要有一半以上的节点存活,zookeeper就可以提供服务。
3)全局数据一致,每个server保存相同的一个副本,client无论连接哪一个server,获取的数据都相同。
4)更新请求依次按顺序执行,来自同一个client的请求按其发送顺序依次执行。
5)数据更新的原子性,数据更新要么成功,要么失败。典型的事务特点。
6)实时性。在一定时间范围内,客户端能读到最新数据。
Zookeeper数据结构
zookeeper的数据结构为树形结构,整体上可以被看做一棵树,每个节点被称作一个ZNode。每个Znode默认只能存储1M的数据,每个Znode都可以通过路径唯一的标识。
Zookeeper应用场景
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点上下线、软负载均衡等。
在分布式环境下,经常需要对应用/服务进行统一命名,便于识别。如下图,Zookeeper负责控制客户端所访问的实际服务端地址,对于客户端来说,只需要知道域名即可。
在分布式环境下,配置数据同步是非常常见的,一般要求一个集群中,所有节点的配置信息是一致的,比如Kafka集群。对配置文件修改后,希望能快速同步到其他各个节点上。这种情况下,可以将配置管理交由Zookeeper实现,可以将配置数据写到其中一个Znode中,各个客户端监听这个Znode,一旦该配置数据发生变化,Zookeeper将通知各个客户端。
分布式环境下,实时掌握每个节点的状态是必要的,Zookeeper可根据节点的实时状态做出调整。Zookeeper可以实现实时监控节点状态变化,实现方法为将节点信息写入Zookeeper的一个Znode,监听这个Znode可获得它的实时变化。
客户端能实时洞察到服务器上下线的变化,当服务器的状态变化时,Zookeeper会通知到。
在Zookeeper中记录每台服务器的访问次数,通过算法,让访问数最少的服务器处理最新的访问请求,比如下图192.168.22.14的服务器就会处理新来的client2的服务请求。
Zookeeper下载安装
Zookeeper的下载地址https://zookeeper.appache.org/
安装步骤:
1)安装jdk
2)复制Zookeeper到指定路径下
3)解压
4)参数修改
5)启动Zookeeper
如果您喜欢这篇文章,别忘了点赞和评论哦!