「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」。
一、Zookeeper的概述
Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的 一致性问题和数据管理问题。
Zookeeper本质上是一个分布式文件系统, 适合存放小文件,也可以理解为一个数据库。
二、Zookeeper的作用
Zookeeper可以解决资源分配问题,如多个进程同时写入一个文件,因为多个进程并不在同一个主机上,所以他们之间只有网络联系,不能通过进程锁来控制。这样多主机同时写入时zookeeper可以产生一个网络副本,某进程写入后进行同步,当一致时便可完成写入。
三、存储结构与成员组成
存储结构
多台主机安装zookeeper形成集群,数据具体存在哪台机子上并不重要(zookeeper有自己的策略去分配),集群对外会给出一个类似普通资源系统的路径,通过该路径用户可以直接访问文件。
Zookeeper的存储结构是树形,从根开始衍生出一个个节点(Znode),而这每一个Znode既可以携带文件也可以具备文件夹的功能,衍生出子Znode。
正因为 Znode 的特性, 所以 Zookeeper 可以对外提供出一个类似于文件系统的试图, 可以通过操作文件系统的方式操作 Zookeeper
- 使用路径获取 Znode
- 获取 Znode 携带的数据
- 修改 Znode 携带的数据
- 删除 Znode
- 添加 Znode
成员组成
有一些时候,多个团队需要共同完成一个任务,比如,A团队将Hadoop集群计算的结果交给B团队继续计算,B完成了自己任务再交给C团队继续做。这就有点像业务系统的工作流一样,一环一环地传下去。 分布式环境下,我们同样需要一个类似单进程队列的组件,用来实现跨进程、跨主机、跨网 络的数据共享和数据传递,这就是我们的分布式队列。
- Leader:负责所有的写操作,和心跳机制。(一般唯一)
- Follower:负责读操作,以及参与投票。(存在多个)
- Observer:与foller相同,但无投票权。(可以没有)