1.Zookepper从设计模式角度来理解:
a.是一个基于观察者模式设计地分布式服务管理框架,它负责存储和管理大家都关心地数据,然后接收观察者地注册一旦这些数据地状态发生变化,Zookeeper就将负责通
知已经在Zookeeper上注册地那些观察者做出响应地反应。
b.Zookeeper = 文件系统 + 通知机制
#特点:
a.Zookeeper:一个领导(Leader),多个跟随者(Follower)组成地集群。
b.集群中只要有半数以上节点存货,Zookeeper集群就能正常服务。所以Zookeeper适合安装奇数台服务器。
c.全局数据一致:每个Server保存一份相同的数据副本,Ckient无论连接到哪个Server,数据都是一致的。
d.跟新请求顺序执行,来自同一个Client的跟新请求按其发送顺序依次执行。
e.数据跟新原子性,一次数据跟新要么成功,要么失败。
f.实时性,在一定时间范围内,Client能读到最新数据。
2.数据结构:
ZooKeeper数据模型的结构与Unix文件系统很类似,整体上可以看作是一棵树,每
个节点称做一个ZNode。每个ZNod默认能够存储1MB的数据,每个ZNode都可以通
过其路径唯一标识。
3.应用场景:
提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上
下线、软负载均衡等。
1)统一命名服务:在分布式环境下,经常需要对应用、服务进行统一命名,便于识别
例如:IP不容易记住,而域名容易记住。
2) 统一配置管理:
①一般要求一个集群中,所有节点的配置信息是一致的,比如KafKa集群。
②对配置文件修改后,希望能够快速同步到各个节点上。
③可将配置信息写入ZooKeeper上的一个Znode。
④各个客服端服务器监听这个Znode。
⑤一旦Znode中的数据被修改,Zookeeper将通知各个客户端服务器
3)统一集群管理:
①可根据节点实时状态做出一些调整
②Zookeeper可以实时监控节点状态变化,可将节点信息写入Zookeeper上的一个ZNode,监听这个ZNode可获取它的实时状态变化
4)服务器动态上下线:
客服端能实时洞察到服务器上下线的变化
5)软负载均衡:
在Zookeeper中记录每台服务器的访问数,让访问数量少的服务器去处理最新客户端请求
4.配置参数解读:
Zookeeper中的配置文件zoo.cfg中参数含义解读如下:
1.tickTime=2000:通信心跳数,Zookeeper服务器与客户端心跳时间,单位毫秒。Zookeeper使用的基本时间,服务器之间或者客户端与服务器之间维持心跳的时间间隔,也就是每个tickTime时间就会发送一次心跳。
2.initLimit=10:LF初始化时限:集群中的Follower跟随者服务器与Leader领导者服务器之间的初始化连接时能容忍的最多心跳数 ,用它来限定集群中Zookeeper服务器连接到Leader的时限
3.syncLimit=5:LF同步通信时限:集群中Leader与Follower之间最大响应时间单位,假如响应超过syncLimit
4.dataDir:数据文件目录 + 数据持久化路径:主要保存Zookeeper中数据
5.clientPort=2181:客户端连接端口
5.选举机制
1)半数机制:集群中半数以上机器存活,集群可用。所以Zookeeper适合安装奇数台服务器。
2)Zookeeper虽然在配置文件中并没有指定Master和Slave。但是,Zookeeper工作时,是有有一个节点为Leader,其他则为Follower,Leader是通过内部选举机制临时产生的。
6.节点类型
持久:客户端和服务器端断开连接后,创建的节点不删除
短暂:客户端和服务端断开连接后,创建节点自己删除。
|