zookeeper入门了解

1.zookeeper是干什么的?

ZooKeeper是一种分布式协调服务,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。

因此,ZooKeeper有助于开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。

分布式应用: 是指分布在不同计算机上,通过网络来共同完成一项任务的工作方式。

2. zookeeper的结构

zookeeper的数据模型采用树层次结构,在结构上和标准的文件系统很相似。
每个节点被称为一个Znode,节点可拥有子节点。
zookeeper入门了解

zookeeper和普通文件系统的区别:
Znode兼具文件和目录两种特点,
Znode具有原子性操作,
Znode存储数据大小有限制(通常以KB为单位,至多1M),
Znode通过路径引用(必须是绝对路径)。

4. Znode节点

1. 组成部分

每个Znode由3部分组成:
-stat(状态信息,包括版本、权限等)
-data(与Znode关联的数据)
-children(该Znode的子节点)

2. 节点类型

Znode有两大种,分别是永久节点和临时节点。这是在节点被创建时就决定的,不可更改。

临时节点:该节点的生命周期依赖于创建它们的会话。当会话结束后,会话期间内创建的临时节点将会被自动删除。临时节点不允许拥有子节点。
永久节点:生命周期不依赖与会话,,除非手动删除,否则将一直存在。

除此之外,zookeeper具有序列化的特性。

序列化:该Znode名字后面后有一个自增的***,该***对于父节点唯一。***的格式为:十位数字,没不够的在前面补0。

因此,Znode可细分为四种:

  1. 永久节点
  2. 序列化永久节点
  3. 临时节点
  4. 序列化临时节点

5.会话

zookeeper入门了解上面的图片是zookeeper架构图。
处理客户端发送来的请求的流程是这样的:客户端连接zookeeper集群中的一台server,如果是读请求,则直接由该server处理,如果是写请求,则转发给leader server处理。
在这个过程中,会话的生命周期是这样的:

建立: 一旦客户端连接到服务器,服务器将建立会话并向客户端分配会话ID 。
维持: 客户端以特定的时间间隔发送心跳以保持会话有效。
销毁: 如果ZooKeeper集合在超过服务器开启时指定的期间(会话超时)都没有从客户端接收到心跳,则它会判定客户端死机。
注:当由于服务器压力太大、网络故障或是客户端主动断开连接等各种原因导致客户端连接断开时,只要在SessionTimeout规定的时间内能够重新连接上集群中任意一台服务器,那么之前创建的会话仍然有效。