ZooKeeper

本文涉及的产品
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: ZooKeeper

前言

Hadoop的三大件(HDFS、MapReduce和Yarn)基本上是学完了,剩下时间就是把《Hadoop权威指南》多啃几遍就行了。

今天开干ZooKeeper!尽管最近是考试周,但是丝毫挡不住学习新知识的热情,干就完了!


ZooKeeper入门

1.1 概述

       Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目, 它是一个为分布式系统解决数据一致性方案的中间件,它致力于分布式应用中的一些高性能的、高可用的并且具有严格访问顺序控制的能力模型,实现分布式的协调服务 

       ZooKeeper主要是为了解决分布式架构下数据一致性问题,典型的应用场景有分布式配置中心、分布式注册中心、分布式锁、分布式队列、集群选举、分布式屏障、发布/订阅等场景。

1.2 ZooKeeper的特点

  1. Zookeeper:一个领导者(Leader),多个跟随者(Follower)组成的集群。
  2. 集群中只要有半数以上节点存活,Zookeeper集群就能正常服务。所 以Zookeeper适合安装奇数台服务器。
  3. 全局数据一致:每个Server保存一份相同的数据副本, Client无论连接到哪个Server,数据都是一致的
  4. 更新请求顺序执行,来自同一个Client的更新请求按其发送顺序依次执行。
  5. 数据更新原子性,一次数据更新要么成功,要么失败。
  6. 实时性,在一定时间范围内,Client能读到最新数据。(当一个客户端节点对数据进行写操作后,ZooKeeper很快就可以将更新同步,使得别的服务端很快就可以读取到更新后的数据)

1.3 数据结构

       ZooKeeper提供了一个类似于Linux文件系统的层次结构,可以被用来管理分布式系统中的配置信息、命名服务、分布式锁等,它整体上可以看作是一棵树,每个节点称做一个 ZNode。每一个ZNode 默认能够存储 1MB 的数据(存储内容有限),每个 ZNode 都可以 通过 其路径唯一标识。

       Znode是Zookeeper分布式协调服务中的一个基本数据结构,用于存储和维护节点信息。这些节点信息可以包括分布式系统中各个节点的元数据、配置信息、状态信息以及锁等。


通过Znode可以实现分布式系统中的节点注册、状态变化通知、选举协调以及数据同步等功能。

1.4 应用场景

提供的服务包括:统一命名服务、统一配置管理、统一集群管理、服务器节点动态上下线、软负载均衡、master选举以及分布式锁等。

统一配置管理

       我们的集群配置信息都是基本都是要求一致的,比如我们之前学过的Hadoop集群,以及以后要学的 kafka 集群。所以我们希望对配置文件修改完毕之后,可以快速同步配置信息到所有节点。        

ZooKeeper帮我们实现了这一过程:        

  1. ZooKeeper将我们的配置信息写入到ZooKeeper上的一个Znode上。
  2. 各个节点会监听Znode的变化来完成自己的更新。
  3. 一旦Znode中的数据被修改,ZooKeeper就会通知相关的节点。

统一集群管理

在多个节点组成的集群当中,为了保证集群HA的特性,每个节点都回去冗余一份数据副本,这就需要保证客户端访问集群中任意一个节点的数据,都必须是最新的数据。

       ZooKeeper可以实时监控节点状态的变化,根据节点的状态做出一些调整(所有节点的状态信息都被写入到ZooKeeper上的一个Znode上,ZooKeeper可以实时监控这些节点的状态变化,而且我们的客户端也可以通过注册来获取所有节点的实时状态变化信息。)

       Hadoop集群中的各个组件(如NameNode、ResourceManager、DataNode、NodeManager等)的状态信息,都需要Zookeeper进行管理和协调。例如,Zookeeper可以维护当前活跃的NameNode节点,监控DataNode节点的健康状态,监控ResourceManager节点和NodeManager节点的状态等。

服务器节点动态上下线

  1. 节点启动上线后会去ZooKeeper去注册自己的信息到ZooKeeper的一个Znode上。
  2. 客户端就可以获取到当前在线的节点列表并注册监听。
  3. 注册监听后的客户端能实时洞察到服务器上下线的变化。

软负载均衡

根据每个节点的负载压力,将客户端请求发送到压力小的节点。

分布式锁

如何保证跨进程的共享资源的并发安全性,对于分布式系统,必须使用跨进程的锁(分布式锁)来实现。

Master选举

在多个节点组成的集群中,为了降低集群数据同步的复杂度,一般都会存在Master和Salve两种角色的节点,Master负责去做事务和非事务的请求处理,Salve专门去做非事务请求处理,这就需要一个中间件(zookeeper)来专门协调分布式系统中的问题。

相关实践学习
基于MSE实现微服务的全链路灰度
通过本场景的实验操作,您将了解并实现在线业务的微服务全链路灰度能力。
相关文章
|
3月前
|
存储 容灾 算法
深入理解Zookeeper系列-1.初识Zoookeeper
深入理解Zookeeper系列-1.初识Zoookeeper
51 0
|
19天前
|
存储 监控 负载均衡
ZooKeeper
ZooKeeper
|
5月前
|
运维 分布式计算 算法
Zookeeper解读
Zookeeper解读
36 0
|
7月前
|
存储 算法 Linux
Zookeeper
 ZooKeeper 是一种分布式协调服务,用于管理大型主机。在分布式环境中协调和管理服务是一个复杂的过程。ZooKeeper 通过其简单的架构和 API 解决了这个问题。ZooKeeper 允许开发人员专注于核心应用程序逻辑,而不必担心应用程序的分布式特性。
99 0
|
10月前
|
存储 域名解析 负载均衡
Zookeeper—应用
前言 在前面的几篇文章中,我们讲解了ZooKeeper的组成,基本功能,集群选举,ZAB协议和数据一致性。所有的设计都因应用场景而生,不结合场景的方案都是耍流氓。在今天的文章中,我们将要去了解ZK的应用,加深对ZK的认识。
|
存储 监控 Unix
一文了解Zookeeper
一文了解Zookeeper
226 0
一文了解Zookeeper
|
存储 设计模式 分布式计算
Zookeeper系列 (一)
Zookeeper 是 Apache 的一个分布式服务框架,是 Apache Hadoop 的一个子项目。
90 0
Zookeeper系列 (一)
|
存储 分布式计算 数据管理
|
存储 Dubbo 网络协议
关于ZooKeeper,你好像还有不知道的事情
Dubbo 通过注册中心在分布式环境中实现服务的注册与发现,而注册中心通常采用 ZooKeeper,研究注册中心相关源码绕不开 ZooKeeper,所以学习了 ZooKeeper 的基本概念以及相关 API 操作。
关于ZooKeeper,你好像还有不知道的事情
zookeeper理解与应用
它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。
84 0