`
Return_values
  • 浏览: 5715 次
  • 性别: Icon_minigender_2
  • 来自: 南京
社区版块
存档分类
最新评论

分布式协调服务zookeeper知多少

阅读更多
zookeeper简介
由于之前了解一个分布式框架(dubbo)时,其中涉及到zookeeper,因此今天就先来大概的介绍一下zookeeper。zookeeper是一个用来管理大量的主机的分布式协调服务。
(一) 分布式应用程序
分布式应用程序可以通过在它们之间协调以完成特定的任务,快速且有效的方式在多个系统中的网络在给定时间(同时)运行
分布式应用程序有两部分,分别是:服务器和客户端应用程序。如下图所示:



(二) 分布式应用程序的优点
可靠性 可扩展性 透明性
(三) zookeeper提供的服务
命名服务 配置管理 集群管理 节点领导者选举 锁定和同步服务 数据注册表
ZooKeeper基础
(一) ZooKeeper的体系结构
描绘ZooKeeper 的“客户端 - 服务器架构,如下图所示




ZooKeeper 架构的一部分组件如下表中所解释。
1. Client:客户端,发送消息到服务器。
2. Server:服务器,ZooKeeper集成的一个节点,提供所有的服务给客户。
3. 合组:ZooKeeper 服务器组。
4. Leader:它执行自动恢复,如果任何连接的节点的故障的服务器节点。
5. Follower:遵循领导指示服务器节点
(二) 分层命名空间
下图显示了用于内存中表示 ZooKeeper 文件系统的树形结构。 ZooKeeper节点被称为znode。每个znode由一个名称识别,并通过路径(/)序列隔开。



zookeeper名字空间由节点znode构成,其组织方式类似文件系统,其中各个节点相当于目录和文件,通过路径作为唯一标识。与文件系统不同的是,每个节点具有与之对应的数据内容,同时也可以具有子节点。在 ZooKeeper 数据模型中每个 znode 维护一个 stat 结构。 一个统计(stat )只是提供了一个 znode 元数据。 它由版本号、动作控制列表(ACL)、时间戳、数据长度组成。
ZooKeeper组件
同一个zookeeper服务下的server有两种,一种是leader server,另一种是follower server。leader特殊之处在于它有决定权。在zookeeper整个服务下的每台server将复制各个组件。Replicated Database是包含了所有数据的内存数据库
Zookeeper之leader
让我们来分析一下一个领导节点在ZooKeeper集合的选举。考虑集群中有N多的节点。领导人选举的过程如下
所有节点创建一个顺序,znode具有相同路径,/app/leader/guid_。
ZooKeeper 的集合将追加的10位序列号的路径。
对于给定的实例,它在znode创建最小数量的节点成为领导者以及所有其他节点的追随者。
每一个追随者节点监控下一个最小号的znode。

Zookeeper安装配置
(一) 安装Java(略)
(二) ZooKeeper框架的安装
1. 下载并tar开解压(略)
2. 创建配置文件
打开 并编辑conf/zoo.cfg 配置文件,并将以下所有参数设置为开始点。
tickTime = 2000
dataDir = /path/to/zookeeper/data
clientPort = 2181
initLimit = 10
syncLimit = 5
3. 启动ZooKeeper服务器
$ bin/zkServer.sh start
4. 启动 CLI
$ bin/zkCli.sh
5. 停止ZooKeeper服务器
$ bin/zkServer.sh stop
Zookeeper CLI
ZooKeeper 命令行界面(CLI)是用来与 ZooKeeper 集成作开发进行交互的。这是在调试和使用不同的选项时的工作有用。
为了执行ZooKeeper的CLI操作, ZooKeeper服务器首先要启动 (“bin/zkServer.sh start”) , 然后使用 ZooKeeper 客户端 (“bin/zkCli.sh”). 当客户端启动后,可以执行以下操作:(1)创建znodes,(2)获取数据,(3)监视 znode 变化,(4)设置数据,(5)创建 znode 的子 znode,(6)列出一个 znode 的子 znode,(7)检查状态,(8)删除一个 znode
(一) 创建Znodes
create  /path /data
(二) 获取数据
get  /path
(三) 监视
get  /path [watch] 1
(四) 设置数据
set  /path /data
(五) 创建子znode
create  /parent/path/subnode/path /data
(六) 列出子znode
ls  /path
(七) 检查状态
stat  /path
(八) 删除Znode
rmr  /path

Zookeeper 常用API
ZooKeeper有一个Java和C绑定的官方API。ZooKeeper社区提供了对于大多数语言(.NET,Python等)的非官方API。使用ZooKeeper的API,应用程序可以连接,互动,操作数据,协调,以及从ZooKeeper集成断开。
(一) ZooKeeper的API基础知识
客户端应遵循下面给出带 ZooKeeper 集成一个清晰的交互步骤。
连接到ZooKeeper 。ZooKeeper 集成分配客户端的会话ID。
定期发送心跳到服务器。否则,ZooKeeper 集成过期的会话ID,那么客户端需要重新连接。
获得/设置只要znodes会话ID是活动的。
从 ZooKeeper 集成断开,当所有的任务都完成后。如果客户端处于非活动状态较长时间,那么 ZooKeeper 集成会自动断开客户机。

(二) Java绑定
让我们这一章中理解最重要的ZooKeeper API。ZooKeeper API的中心部分是ZooKeeper 类。它提供了一些选项来连接 ZooKeeper 集成在其构造,有以下几种方法
• connect − 连接到 ZooKeeper 的集成
• create − 创建一个 znode
• exists − 检查znode是否存在及其信息
• getData − 从一个特定的znode获取数据
• setData − 设置数据在特定znode
• getChildren − 得到一个特定 znode 的所有可用子节点
• delete − 得到一个特定的 znode 及其所有子节点
• close − 关闭连接

(三) 连接到 ZooKeeper 集合
ZooKeeper类通过它的构造函数提供了连接功能。构造函数如下:
ZooKeeper(String connectionString, int sessionTimeout, Watcher watcher)

(四) 创建一个Znode
ZooKeeper类提供了一个方法来在集合 ZooKeeper 创建一个新的 znode。创建方法如下:
create(String path, byte[] data, List<ACL> acl, CreateMode createMode)

(五) Exists – 检查一个Znode的存在
exists 方法来检查 znode 的存在。如果指定的 znode 存在它返回一个 znode 元数据。exists 方法如下 –
exists(String path, boolean watcher)

(六) getData 方法
getData方法来获取连接在指定 znode 及其状态的数据。getData方法如下
getData(String path, Watcher watcher, Stat stat)

(七) setData 方法
SetData方法来修改附着在指定 znode 的数据。SetData方法如下 –
setData(String path, byte[] data, int version)

(八) getChildren 方法
getChildren方法来得到一个特定的 znode 所有子节点。getChildren 方法如下 -
getChildren(String path, Watcher watcher)

(九) 删除一个Znode
delete 方法来删除指定 znode。delete方法如下 –
delete(String path, int version)

本文原创首发于Cobub官网博客,作者:何才
如有转载请注明作者和出处!
推荐一款开源私有化部署的移动应用数据统计分析系统Cobub Razor
项目地址:https://github.com/cobub/razor
官网:www.cobub.com




  • 大小: 33.4 KB
  • 大小: 43 KB
  • 大小: 31.7 KB
分享到:
评论

相关推荐

    04分布式协调服务器Zookeeper.pdf

    分布式协调服务器Zookeeper是Apache的一个开源项目,由雅虎研究院最初研发,专为解决分布式环境下的数据一致性问题而设计。Zookeeper提供了一种集中式的、高性能的服务,它以基于Paxos算法的ZAB(Zookeeper Atomic ...

    开课吧-04分布式协调服务器Zookeeper.pdf

    分布式协调服务器Zookeeper是Apache的一款开源项目,设计用于构建分布式协调服务,它为分布式系统提供了一致性保障。Zookeeper的出现源于雅虎研究院的研究,后来成为Apache软件基金会的顶级项目。Zookeeper的核心...

    大厂学苑-01分布式协调服务器Zookeeper1

    分布式协调服务器Zookeeper是Apache的一个开源项目,最初由雅虎研究院开发。Zookeeper的主要功能是为分布式系统提供一致性服务,它扮演着协调者角色,帮助处理分布式环境中的配置管理、域名服务、分布式同步以及集群...

    分布式服务框架 Zookeeper -- 管理分布式环境中的数据

    总之,Zookeeper是构建分布式系统不可或缺的一部分,它通过提供可靠的数据管理和服务协调,大大简化了分布式环境的复杂性。理解和掌握Zookeeper的原理和应用,对于任何涉及分布式计算的开发者都至关重要。

    03-05-05-分布式协调服务zookeeper应用实战1

    Zookeeper 是一个分布式协调服务,常用于管理分布式系统的配置信息、命名服务、集群状态管理和分布式锁等场景。在Zookeeper中,每个数据单元被称为ZNode,具有类似文件系统的层级结构,可以存储数据并挂载子节点。...

    分布式协调服务Zookeeper的安装配置与基本操作解析

    适合人群:对分布式系统管理有兴趣的技术人员,尤其是需要使用或维护基于Zookeeper的应用系统的开发者。 使用场景及目标:适用于准备搭建高可用性和稳定性的分布式应用系统的企业或者团队,在遇到节点状态同步、集群...

    分布式系统协调 ZooKeeper.rar

    ZooKeeper作为一个分布式协调服务,其核心功能主要包括命名服务、配置管理、集群同步、分布式锁和分布式队列等。这些功能为分布式系统的各个组件提供了可靠的通信和状态共享机制。 1. 命名服务:ZooKeeper允许节点...

    分布式同步系统Zookeeper的优化.pdf

    随着云计算和大数据技术的不断发展,分布式系统将变得越来越复杂,对Zookeeper等分布式协调服务的要求也会越来越高。因此,不断探索和实施更为高效和智能的优化策略,对于保证分布式系统的高可用性、高性能和易管理...

    分布式协调服务-zookeeper1

    分布式协调服务-Zookeeper是解决分布式环境中数据一致性问题的关键工具。Zookeeper源于雅虎,后来成为Apache软件基金会的一个项目,它的设计灵感来源于Google的Chubby。作为一个分布式数据一致性解决方案,Zookeeper...

    java分布式系统服务ZooKeeper的学习历程.rar

    分布式系统服务ZooKeeper的学习历程

    zookeeper, 分布式系统服务ZooKeeper的学习历程.zip

    ZooKeeper,作为一个开源的分布式协调服务,源自雅虎研究院,现已成为Apache基金会的重要项目。它为分布式应用提供了一种高效、可靠的命名服务、配置管理、集群同步、领导者选举等核心功能。本学习历程将带你深入...

    0809分布式协调服务-zookeeper1

    分布式协调服务Zookeeper是Apache Hadoop的一个子项目,它的主要目标是为分布式应用提供一致性服务。Zookeeper在分布式系统中扮演着重要的角色,它能够帮助解决数据一致性问题,实现配置管理、命名服务、集群同步、...

    分布式系统服务ZooKeeper的学习历程

    分布式系统服务ZooKeeper的学习历程.。。。。。。。。。

    0813分布式协调服务-zookeeper1

    分布式协调服务Zookeeper是一个强大的开源框架,主要用于解决分布式环境下的数据一致性问题,提供高可用、高性能的协调服务。Zookeeper的主要功能包括数据发布订阅、负载均衡、集群中的Master选举、分布式锁等。它...

    0822分布式协调服务-zookeeper1

    【分布式协调服务-Zookeeper详解】 Zookeeper是一种分布式协调服务,其设计目的是为了简化分布式环境下的数据管理和一致性问题。Zookeeper采用了一种名为ZAB(Zookeeper Atomic Broadcast)的协议,它是在Paxos算法...

    分布式服务框架zookeeper 3.4.13版本

    9. **Zookeeper的应用场景**:除了上述基本功能外,Zookeeper还常用于分布式协调、分布式配置、微服务治理、流处理平台如Kafka的元数据管理等。 10. **Zookeeper的性能优化**:为了提高性能,Zookeeper通常会在多个...

    分布式服务框架 Zookeeper — 管理分布式环境中的数据.doc

    Paxos 算法确保了在分布式环境中的一致性和正确性,而 ZAB(Zookeeper Atomic Broadcast)协议则用于 Zookeeper 中的分布式协调和数据同步。Zookeeper 使用一种类似文件系统的目录节点树结构来存储数据,但这不是它...

    [PPT]《云计算》教材配套课件10-分布式锁服务ZooKeeper

    在实际应用中,ZooKeeper可以用于实现各种分布式协调功能,例如: 1. 分布式锁服务:通过创建特定类型的节点来模拟锁的概念,例如,独占锁可以通过创建带有序列号的临时节点实现,第一个创建的节点获得锁。 2. ...

    基于Apache ZooKeeper的分布式协调服务.zip

    基于Apache ZooKeeper的分布式协调服务 项目简介 Apache ZooKeeper是一个集中的服务,用于维护配置信息、命名、提供分布式同步和提供组服务。它是一个经典的分布式数据一致性解决方案,致力于为分布式应用提供高...

Global site tag (gtag.js) - Google Analytics