WT-Zookeeper学习与介绍

一.概念(文件系统):

开源的分布式协调服务,是Google的chubbly一个开源的实现,他是一个分布式提供一致性的软件。


二.zookeeper提供的功能:

  • 配置维护
  • 域名服务
  • 分布式锁
  • 主服务

三.Zookeeper的特点:

  • 简单

zookeeper的核心是一个精简的额文件系统,它支持一个简单的操作和一些抽象操作

  • 丰富

可实现一些协调数据结构和协议,例如:分布式队列,分布式锁和一组统计别节点中的“领导者选举”

  • 高可靠

支持集群模式,可以很容易解决单点故障问题

  • 松耦合交互

不同进程之间交互不需要了解彼此,甚至可以不必同时存在,某进程在Zookeeper中留下消息后,该进程结束后其他进程可以读这条信息

  • 资料库

Zookeeper实现了一个关于通用协调模式的开源共享存储库,能使开源编写这类通用协议。


四.Zookeeper的角色

  • 领导者

          负责进行投票的发起与决议,更新系统状态。

  • 学习者   (跟随者   ,   观察者)

           follow用户接受客户请求,并向客户返回结果,在选举过程中参与投票

           Observer可以接受客户端链接,将写请求给学习者,但观察者不参与投票,只是同步学习者的状态 , 目的是为了扩展系统,提高系统的读写速度。

  • 客户端

            请求发起方。


五. ZooKeeper数据模型 

  • - 层次化的目录结构,命名符合常规文件系统规范 
  • - 每个节点在zookeeper中叫做**znode**,并且其有一个唯一的路径标识 
  • - 节点znode可以包含数据和子节点,但是EPHEMERAL类型的节点不能有子节点 
  • - znode中的数据可以有多个版本,比如某一个路径下存有多个数据版本,那么查询这个路径下的数据就需要带上版本 
  • - 客户端应用可以在节点上设置监视器 
  • - 节点不支持部分读写,而是一次性完整读写 

# 6. ZooKeeper的节点

- zookeeper中的节点包含下面两个类型的节点

  - 临时节点(ephemeral) 
  - 持久节点(persistent) 

  **znode的类型在创建时确定并且之后不能再修改** 

  **znode默认不指定类型是持久节点**

- ephemeral类型的节点

  - 在节点客户端会话结束时,会将zookeeper中的节点删除
  - 不能有子节点,只能有数据

- persistent类型的节点

  -节点不依赖与客户端会话,只有当客户端明确要删除该persistent节点时才会被删除 

  - ZooKeeper的客户端和服务器通信采用长连接方式 ,每个客户端和服务器通过心跳来保持连接,这个连接状态称之为session ,如果znode是临时节点,这个seesion失效,znode也就删除了 


 7. ZooKeeper中的选举机制

- 服务器的ID

  - 分别1,2,3
  - 编号越大在选择算法中的**权重**越大 

- 数据的ID

  - 服务器中存放的最大数据ID.
  - 值越大说明数据越新,在选举算法中数据越新权重越大 

- 编辑时钟

  - 投票的次数 
  - 同一轮投票过程中的逻辑时钟值是相同的。每投完一次票这个数据就会增加,然后与接收到的其它服务器返回的投票信息中的数值相比,根据不同的值做出不同的判断 

- 选举状态

  - LOOKING,竞选状态。
  - FOLLOWING,随从状态,同步leader状态,参与投票。
  - OBSERVING,观察状态,同步leader状态,不参与投票。
  - LEADING,领导者状态。

- 选举信息的内容

  ​    在投票完成后,需要将投票信息发送给集群中的所有服务器,它包含如下内容。 

  - 服务器ID
  - 数据ID
  - 逻辑时钟
  - 选举状态

- 选举机制的结果

  - zk启动之后通过选举机制,来选举出来一个leader

8.zookeeper写文件流程

客户端发出一个请求,服务器follower接收之后,会将数据发送个leader,当leader同步到超过一半的节点时,会给客户端返回一个结果,剩下 的节点,zookeeper会内部自己同步。

zookeeper 中每个节点都有完整的数据。

猜你喜欢

转载自blog.csdn.net/wt5264/article/details/109717345
今日推荐