当前位置: 代码迷 >> 综合 >> 【Zookeeper】一、Zookeeper 概述
  详细解决方案

【Zookeeper】一、Zookeeper 概述

热度:120   发布时间:2023-09-21 00:40:38.0

目录

一、Zookeeper 概述

1.1 什么是 Zookeeper

1.2 Zookeeper 的特点

1.3 Zookeeper 数据结构

1.4 应用场景

1.4.1 统一命名服务

1.4.2 统一配置管理

1.4.3 统一集群管理

1.4.4 服务器节点动态上下线

1.4.5 软负载均衡


一、Zookeeper 概述

1.1 什么是 Zookeeper

Zookeeper 是一个基于观察者模式设计的分布式服务管理框架,可以将它认为是 文件系统 + 通知机制。它负责存储和管理大家都关心的数据,然后接受观察者的注册,一旦这些数据的状态发生变化,Zookeeper 就将负责通知已经在 Zookeeper 上注册的那些观察者作出相应的反应。

 

1.2 Zookeeper 的特点

  • 集群: 由一个领导者(Leader),多个追随者(follower)组成的集群。同时支持注册多个观察者(Observer)
  • 稳定性: 集群中只要有半数以上节点存活,Zookeeper 集群就能正常服务
  • 全局数据一致: 每个 server 都保存一份相同的数据副本,Client 无论连接到哪一个 Server,数据都是一致的
  • 更新请求顺序进行: 来自同一个 Client 的更新请求按其发送的顺序依次执行
  • 数据更新原子性: 一次数据更新要么成功,要么失败
  • 实时性: 在一定时间范围内,Client 能读到最新数据

 

1.3 Zookeeper 数据结构

Zookeeper 的数据结构可以看成一棵树,每个节点称作一个 ZNode,每个 ZNode 默认能够存储 1MB 的数据,且每个 ZNode 都可以通过其路径唯一标识。

【Zookeeper】一、Zookeeper 概述

 

1.4 应用场景

提供的服务类型有:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡等

1.4.1 统一命名服务

需求:

在分布式系统中,经常需要给一个资源生成一个唯一的ID,在没有中心管理结点的情况下,要生成这个全局唯一,又便于理解的的ID并不是一件很容易的事情。Zookeeper 就提供了这样一个命名服务

实现:

使用 Zookeeper 创建顺序节点时,成功创建的每个节点都会返回一个编号,使用该编号以及给定的名称即可生成具有特定含义的统一名称

 

1.4.2 统一配置管理

需求:

在分布式环境下,配置文件同步十分常见。如在一个集群中,所有节点的信息是一致的,如 Kafka 集群,对配置文件修改后,希望可以快速同步到各个节点上。

实现:

Zookeeper 的观察者模式则能帮助我们实现这一点,我们可以将配置信息写入 ZooKeeper 上的一个 ZNode 中,各个服务端监听这个 ZNode,一旦 ZNode 中的数据被修改,ZooKeeper 将通知各个客户端服务器。

【Zookeeper】一、Zookeeper 概述

 

1.4.3 统一集群管理

需求:

在分布式环境中,实时掌握每个节点的状态是必要的。例如某些节点挂了,其他所有的节点立刻都能知道,并可根据节点实时状态作出一些调整。

实现:

我们可以将节点信息写入 ZooKeeper 上的一个 ZNode 中,监听这个 ZNode 可以获取它的实时状态变化。

 

1.4.4 服务器节点动态上下线

需求:

客户端能实时洞察到服务器上下线的变化

实现:

各个服务器将其本身是否在线的状态写入 Zookeeper 中,客户端观察 Zookeeper 上的数据变化,发现原本访问的服务器挂了,则自动切换连接的服务器

【Zookeeper】一、Zookeeper 概述

 

1.4.5 软负载均衡

需求:

由于每台服务器的访问数都不同,将更多的请求发送到压力更轻的服务器上

实现:

Zookeeper 中记录每台服务器的访问数,让客户端去访问压力更轻的服务器。

【Zookeeper】一、Zookeeper 概述

 

 

 

 

 

 

 

  相关解决方案