您现在的位置是:首页 >学无止境 >ZooKeeper网站首页学无止境

ZooKeeper

让线程再跑一会 2024-10-15 12:01:04
简介ZooKeeper

前言

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

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


ZooKeeper入门

 

1.1 概述

        Zookeeper 是一个开源的分布式的,为分布式框架提供协调服务的 Apache 项目。

        Zookeeper 的主要作用是提供分布式系统中的协调服务,为分布式应用程序提供高效、可靠、具有可扩展性的协调功能。

        具体来说,Zookeeper 是一个开源的分布式协调服务,其中包含了一些常见的分布式应用程序所需的基础功能,如命名服务分布式锁分布式消息队列等。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 应用场景

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

统一配置管理

        我们的集群配置信息都是基本都是要求一致的,比如我们之前学过的Hadoop集群,以及以后要学的 kafka 集群。所以我们希望对配置文件修改完毕之后,可以快速同步配置信息到所有节点。        
ZooKeeper帮我们实现了这一过程:        
  1. ZooKeeper将我们的配置信息写入到ZooKeeper上的一个Znode上。
  2. 各个节点会监听Znode的变化来完成自己的更新。
  3. 一旦Znode中的数据被修改,ZooKeeper就会通知相关的节点。

统一集群管理

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

服务器节点动态上下线

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

软负载均衡

根据每个节点的负载压力,将客户端请求发送到压力小的节点。
风语者!平时喜欢研究各种技术,目前在从事后端开发工作,热爱生活、热爱工作。