1、zookeeper的数据模型,类似于文件系统,不同的是每个节点除了可以拥有子节点,节点本身还可以绑定数据。节点的术语叫znode。每个znode还保存有数据的版本信息,ACL的版本信息,时间戳信息等。

zookeeper读书笔记1 zookeeper概览

2、znode的类型有永久节点和临时节点两种,临时节点在创建它的session消失的时候被删除。这两种znode又都有顺序节点和非顺序节点两种。

3、watchs。客户端可以为一个znode设置一个watch,当这个znode改变的时候,watch会被触发,相应的client会收到通知,然后watch会被删除,想要继续监视znode的变化,client就要重新设置watch。如果client和zookeeper之间的连接断开的时候,client会收到一个本地的通知,做相应的处理。

4、zookeeper的保证

  • 顺序性,同一个client发出的update命令,会按顺序执行
  • 原子性,update要么成功要么失败,没有部分成功或部分失败。
  • 一致性,客户端不管连接哪个zookeeper服务器,看到的数据都是一样的。
  • 及时性,zookeeper集群中每个服务器的数据,保证会在一个时间范围内达到最新的状态。

5、zookeeper的数据操作

  • create : creates a node at a location in the tree

  • delete : deletes a node

  • exists : tests if a node exists at a location

  • get data : reads the data from a node

  • set data : writes data to a node

  • get children : retrieves a list of children of a node

  • sync : waits for data to be propagated

6、zookeeper集群的结构

zookeeper读书笔记1 zookeeper概览

客户端读取数据时,flowwer直接从本地内存中取数据。

客户端写数据时,flowwer会把写请求转发到leader,然后leader向每个flowwer发送一个message proposals,flowwer同意message delivery。当leader收到超过n+1个flowwer的同意回复。。。。,

这个过程使用的是zookeeper的原子广播消息协议,这个消息系统还负责选举leader、flowwer从leader同步数据等过程。

因为这个消息系统是原子性的,所以每个写请求要么全部同步到flowwer要么一个flowwer都不会同步,所以每个flowwer的数据都是一致的。

 

 

 

相关文章:

  • 2021-11-18
  • 2021-06-11
  • 2022-12-23
  • 2021-12-02
  • 2021-08-30
  • 2022-12-23
猜你喜欢
  • 2021-11-12
  • 2021-06-29
  • 2021-09-28
  • 2021-06-12
  • 2021-08-14
  • 2021-06-17
  • 2021-07-20
相关资源
相似解决方案