Zookeeper简述(最通俗易懂)

Zookeeper总结

本文对Zookeeper简述,对特点进行分析,对数据结构进行简单描写,Zookeeper所提供的服务,配置文件,内部选举机制,以及节点类型进行简单总结

一 .Zookeeper简述

  • Zookeeper是一个开源的分布式的,为分布式提供协调服务的Apache项目
  • Zookeeper从设计模式角度上解释:是一个基于观察者模式设计的分布式服务管理框架,它是负责储存和管理大家关心的数据,然后接受观察者的注册。一旦这些数据发生改变,Zookeeper就将负责通知已经在Zookeeper上注册的那些观察者做出相应的反应。

二 . Zookeeper特点

  1. Zookeeper只有一个领导者(leader),多个跟随者(Follower)组成的集群。
  2. 集群只要有半数以上的节点存活(在配置文件有集群信息),zookeeper集群就能正常服务。
  3. 全局数据一致:每一个server保存一份相同的数据副本,Client无论连接到哪一个Server数据都是一致的。
  4. 更新请求顺序执行:来自同一个Client的更新请求按照发送次序依次执行。
  5. 数据更新原子性:一次数据更新要么成功要么失败。
  6. 实时性:在一定范围内,Client能读到最新数据。

三 . Zookeeper数据结构

  • zookeeper数据结构与Unix文件系统类似,整体上可以看做是一个树。
  • 每一个节点称作一个Znode,每一个Znode默认能够储存1MB的数据。
  • 每一个Znode都可以通过其路径进行唯一标识。
    zookeeper数据结构

四 . Zookeeper提供服务

Zookeeper提供的服务有:统一命名、统一配置管理、统一集群管理、服务器节点动态上下线以及软负载均衡等。
1.统一命名:
  • 客户端通过访问域名来获取连接,而Zookeeper会根据负载情况选择服务器。
    -命名服务
2.统一配置管理:
  • 分布式环境下,配置文件同步非常重要:
    1.一般要求一个集群中,所有节点的配置信息是一致的,eg:kafka。
    2.对配置文件修改后,希望能够快速同步到各个节点。
  • 配置管理可由Zookeeper实现:
    1.可将配置信息写到一个Znode上。
    2.各个客户端、服务器监听这个Znode。
    3.一旦Znode中的数据被修改,Zookeeper将通知各个客户端、服务器。
    统一配置管理
3.统一集群管理:
  • 分布式环境中,实时掌握每个节点的状态是有必要的。
    1.可根据节点实时状态进行调整。
  • Zookeeper可以实时监控节点状态变化
    1.可以将节点信息写入到Zookeeper的一个Znode。
    2.监听这个Znode,获取它的实时状态变化。
    统一集群管理
4.服务器动态上下线:
  • 客户端借助zookeeper中间件可以实时洞察到服务器的上下线变化。
  • 流程:
    1.服务器启动后去Zookeeper注册信息(创建的都是临时节点)。
    2.客户端从Zookeeper获得当前在线服务器列表,并注册监听。
    3.假如服务器下线,zookeeper没有收到该服务器的心跳。
    4.zookeeper通知客户端服务器节点下线事件通知
    服务器动态上下线
5.负载均衡管理:
  • 在Zookeeper中记录每台服务器的访问次数,让访问最少的服务器去处理最新客户端的请求。
    软负载均衡

五 . Zookeeper配置文件解读

1.ticktime :心跳贞,ms为单位。
2.initlimit : 刚启动集群的心跳时长,L和F之间通信最大延迟时间,单位为ticktime。
3.synlimit :集群正常启动后L和F通信最大延迟时间,单位为ticktime。
4.clientport :客户端连接端口;监听客户端的连接。
5.dataDir : 储存数据文件的目录,以及数据持久化路径;主要用于报存Zookeeper中的数据。

六 . Zookeeper选举机制

  • 半数机制 :集群中半数以上机器存活,集群可用,故所有Zookeeper集群适合安装在奇数台服务器上。
  • Zookeeper虽然配置文件没有指明Master和Slave,但是Zookeeper工作时只有一个节点为L其他为F,L是通过选举机制临时产生的。
  • 用五台服务器模仿投票选举机制:
    1.第一台服务器S1来该给自己投票,发现票数为1,不够5/2=3。
    2.第二台服务器S2来为自己投一票,S1给S2投一票,票数为2,不够5/2=3。
    3.第三台服务器来S3给自己投票,S2给S3投一票,S1给S3投一票,3>5/2。
    4.第四台第五台来不改变L。
    5.服务器给后来的投票。

七. Zookeeper节点类型

  • 持久:客户端和服务器断开连接后,创建的节点不删除。
    1.持久化目录节点:客户端与Zookeeper断开连接后,该节点依旧存在。
    2.持久化顺序编号目录节点:同1所述外,Zookeeper给该节点名称进行顺序编号。
    说明:创建Znode时设置顺序标识,也就是给该名称加一个顺序号,顺序号是一个单调递增的计数器,由父节点维护。
    注意:在分布式系统中,顺序号可以被用于为所有事件进行全局排序,这样客户端可以根据顺序号进行推断事件的顺序。
  • 短暂:客户端与服务器断开连接后,创建的节点自己删除。
    3.临时目录节点:客户端与zookeeper断开连接后,该节点被删除。
    4.临时顺序编号目录节点:同3所述外,Zookeeper给各名称节点进行顺序编号。

谢谢大家阅读,由于小编能力有限,编写有异议请联系我邮箱:[email protected],或者直接评论加私信,反正我也不看。

猜你喜欢

转载自blog.csdn.net/qq_44112474/article/details/102992697