1、什么是Zookeeper
- ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是大数
据重要组件。它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终,将简
单易用的接口和性能高效、功能稳定的系统提供给用户。
- 它是一个为分布式应用提供一致性协调服务的中间件
2、 ZooKeeper提供了什么
- 文件系统:Zookeeper提供一个多层级的节点命名空间(节点称为znode)。与文件系统不同的是,这些节点都可
以设置关联的数据,而文件系统中只有文件节点可以存放数据而目录节点不行。Zookeeper为了保证高吞吐和低延迟,
在内存中维护了这个树状的目录结构,这种特性使得Zookeeper不能用于存放大量的数据,每个节点的存放数据上限
为1M。
- 通知机制:client端会对某个znode建立一个watcher事件,当该znode发生变化时,这些client会收到zk的通知,然
后client可以根据znode变化来做出业务上的改变等。
3、 什么是分布式系统
-
很多台计算机组成一个整体, 一个整体一致对外并且处理同一请求
-
内部的每台计算机都可以相互通信(rest/rpc)
-
客户端到服务端的一次请求到响应结束会经历多台计算机
4 分布式系统的问题
为了支持高并发,Service被部署了多份,每个客户端都保存了一份服务提供者的列表,但这个列表是静态的
(在配置文件中写死的),如果服务的提供者发生了变化,例如有些机器down了,或者又新增了Service的实
例,客户端根本不知道,想要得到最新的服务提供者的URL列表,必须手工更新配置文
件,很不方便。
解决方案: 解除耦合,增加一个中间层 – 注册中心它保存了能提供的服务的名称,以及URL。首先这些服务会在
注册中心进行注册,当客户端来查询的时候,只需要给出名称,注册中心就会给出一个URL。所有的客户端在访
问服务前,都需要向这个注册中心进行询问,以获得最新的地址。
Zookeeper也就能提供这种分布式应用程序协调服务,扮演者注册中心的角色。
5 Zookeeper作用
- master节点选举, 主节点down掉后, 从节点就会接手工作, 并且保证这个节点是唯一的,这也就是所谓首脑模式,从而
保证我们集群是高可用的
- 统一配置文件管理, 即只需要部署一台服务器, 则可以把相同的配置文件同步更新到其他所有服务器, 此操作在云计
算中用的特别多(例如修改了redis统一配置)
-
数据发布与订阅, 类似消息队列MQ
-
分布式锁,分布式环境中不同进程之间争夺资源,类似于多进程中的锁
-
集群管理, 保证集群中数据的强一致性
6、Zookeeper的特性
-
一致性: 数据一致性, 数据按照顺序分批入库
-
原子性: 事务要么成功要么失败
-
单一视图: 客户端连接集群中的任意zk节点, 数据都是一致的
-
可靠性:每次对zk的操作状态都会保存在服务端
-
实时性: 客户端可以读取到zk服务端的最新数据