大数据开发——Zookeeper基本原理与工作机制(一)

286 阅读2分钟

「这是我参与11月更文挑战的第1天,活动详情查看:2021最后一次更文挑战」。

一、Zookeeper的概述

Zookeeper 是一个开源的分布式协调服务框架 ,主要用来解决分布式集群中应用系统的 一致性问题和数据管理问题。

QQ截图20211112090821.png Zookeeper本质上是一个分布式文件系统, 适合存放小文件,也可以理解为一个数据库。

二、Zookeeper的作用

Zookeeper可以解决资源分配问题,如多个进程同时写入一个文件,因为多个进程并不在同一个主机上,所以他们之间只有网络联系,不能通过进程锁来控制。这样多主机同时写入时zookeeper可以产生一个网络副本,某进程写入后进行同步,当一致时便可完成写入。

图片1.png

三、存储结构与成员组成

存储结构

多台主机安装zookeeper形成集群,数据具体存在哪台机子上并不重要(zookeeper有自己的策略去分配),集群对外会给出一个类似普通资源系统的路径,通过该路径用户可以直接访问文件。

Zookeeper的存储结构是树形,从根开始衍生出一个个节点(Znode),而这每一个Znode既可以携带文件也可以具备文件夹的功能,衍生出子Znode。

图片.png 正因为 Znode 的特性, 所以 Zookeeper 可以对外提供出一个类似于文件系统的试图, 可以通过操作文件系统的方式操作 Zookeeper

  • 使用路径获取 Znode
  • 获取 Znode 携带的数据
  • 修改 Znode 携带的数据
  • 删除 Znode
  • 添加 Znode

成员组成

有一些时候,多个团队需要共同完成一个任务,比如,A团队将Hadoop集群计算的结果交给B团队继续计算,B完成了自己任务再交给C团队继续做。这就有点像业务系统的工作流一样,一环一环地传下去。 分布式环境下,我们同样需要一个类似单进程队列的组件,用来实现跨进程、跨主机、跨网 络的数据共享和数据传递,这就是我们的分布式队列。

  • Leader:负责所有的写操作,和心跳机制。(一般唯一)
  • Follower:负责读操作,以及参与投票。(存在多个)
  • Observer:与foller相同,但无投票权。(可以没有)

图片.png