Zookeeper学习笔记.md

Zookeeper的功能

1、Zookeeper是什么

Zookeeper是一个分布式,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,它是集群的管理者,监视着集群中各个节点的状态,根据节点提交的反馈进行下一步的合理操作。最终将简单易用的接口和性能高效、功能稳定的系统提供给用户。

Zookeeper提供了什么

  1. 文件系统
  2. 通知机制

文件系统

每个子目录项如 NameService 都被称作为znode,和文件系统一样,我们能够自由的增加、删除znode,在一个znode下增加、删除子znode,唯一的不同在于znode是可以存储数据的。

  1. PERSISTENT-持久化目录节点,客户端与Zookeeper断开连接后,该节点依然存在。
  2. PERSISTENT_SEQUENTIAL持久化顺序编号目录节点,断开连接后,节点依旧存在,只是Zookeeper给该节点进行顺序编号。
  3. EPHEMERAL-临时目录节点,断开连接后,该节点被删除。
  4. EPHEMERAL_SEQUENTIAL-临时顺序编号目录节点,断开连接后,只是Zookeeper给该节点进行顺序编号。

Zookeeper的通知机制

客户端注册监听它关心的目录节点,当目录节点发生变化(数据改变、被删除、子目录节点增加删除)时,Zookeeper会通知客户端。

Zookeeper做了什么

  1. 命名服务(创建目录,唯一的path)
  2. 配置管理
  3. 集群管理
  4. 分布式锁
  5. 队列管理

配置管理

程序总是需要配置的,如果程序分散部署在多台机器上,要逐个改变配置就变得困难。现在把这些配置全部放到zookeeper上去,保存在 Zookeeper 的某个目录节点中,然后所有相关应用程序对这个目录节点进行监听,一旦配置信息发生变化,每个应用程序就会收到 Zookeeper 的通知,然后从 Zookeeper 获取新的配置信息应用到系统中。

集群管理

  1. 是否有机器退出和加入、选举master。

设计目的

1.最终一致性:client不论连接到哪个Server,展示给它都是同一个视图,这是zookeeper最重要的性能。

2.可靠性:具有简单、健壮、良好的性能,如果消息被到一台服务器接受,那么它将被所有的服务器接受。

3.实时性:Zookeeper保证客户端将在一个时间间隔范围内获得服务器的更新信息,或者服务器失效的信息。但由于网络延时等原因,Zookeeper不能保证两个客户端能同时得到刚更新的数据,如果需要最新数据,应该在读数据之前调用sync()接口。

4.等待无关(wait-free):慢的或者失效的client不得干预快速的client的请求,使得每个client都能有效的等待。

5.原子性:更新只能成功或者失败,没有中间状态。

6.顺序性:包括全局有序和偏序两种:全局有序是指如果在一台服务器上消息a在消息b前发布,则在所有Server上消息a都将在消息b前被发布;偏序是指如果一个消息b在消息a后被同一个发送者发布,a必将排在b前面。

猜你喜欢

转载自blog.csdn.net/Little_Red_Rose/article/details/82981870