`

ZooKeeper典型应用场景

 
阅读更多

1. 名字服务(NameService) 

分布式应用中,通常需要一套完备的命令机制,既能产生唯一的标识,又方便人识别和记忆。 我们知道,每个ZNode都可以由其路径唯一标识,路径本身也比较简洁直观,另外ZNode上还可以存储少量数据,这些都是实现统一的NameService的基础。

 

2. 配置管理(Configuration Management) 

在分布式系统中,常会遇到这样的场景: 某个Job的很多个实例在运行,它们在运行时大多数配置项是相同的,如果想要统一改某个配置,一个个实例去改,是比较低效,也是比较容易出错的方式。

 

3. 组员管理(Group Membership) 

在典型的Master-Slave结构的分布式系统中,Master需要作为“总管”来管理所有的Slave, 当有Slave加入,或者有Slave宕机,Master都需要感知到这个事情,然后作出对应的调整,以便不影响整个集群对外提供服务。

 

4. 简单互斥锁(Simple Lock) 

多个进程尝试去在指定的目录下去创建一个临时性(Ephemeral)结点 /locks/my_lock,ZooKeeper能保证,只会有一个进程成功创建该结点,创建结点成功的进程就是抢到锁的进程,假设该进程为A,其它进程都对/locks/my_lock进行Watch,当A进程不再需要锁,可以显式删除/locks/my_lock释放锁;或者是A进程宕机后Session超时,ZooKeeper系统自动删除/locks/my_lock结点释放锁。此时,其它进程就会收到ZooKeeper的通知,并尝试去创建/locks/my_lock抢锁,如此循环反复

 

5. 互斥锁(Simple Lock without Herd Effect) 

上一节的例子中有一个问题,每次抢锁都会有大量的进程去竞争,会造成羊群效应(Herd Effect),为了解决这个问题,我们可以通过下面的步骤来改进上述过程:

1)每个进程都在ZooKeeper上创建一个临时的顺序结点(Ephemeral Sequential) /locks/lock_${seq};

2)${seq}最小的为当前的持锁者(${seq}是ZooKeeper生成的Sequenctial Number);

3)其它进程都对只watch比它次小的进程对应的结点,比如2 watch 1, 3 watch 2, 以此类推;

4)当前持锁者释放锁后,比它次大的进程就会收到ZooKeeper的通知,它成为新的持锁者,如此循环反复;

这里需要补充一点,通常在分布式系统中用ZooKeeper来做Leader Election(选主)就是通过上面的机制来实现的,这里的持锁者就是当前的“主”。

 

6. 读写锁(Read/Write Lock) 

我们知道,读写锁跟互斥锁相比不同的地方是,它分成了读和写两种模式,多个读可以并发执行,但写和读、写都互斥,不能同时执行行。利用ZooKeeper,在上面的基础上,稍做修改也可以实现传统的读写锁的语义,下面是基本的步骤:

1)每个进程都在ZooKeeper上创建一个临时的顺序结点(Ephemeral Sequential) /locks/lock_${seq};

2)${seq}最小的一个或多个结点为当前的持锁者,多个是因为多个读可以并发;

3)需要写锁的进程,Watch比它次小的进程对应的结点;

4)需要读锁的进程,Watch比它小的最后一个写进程对应的结点;

5)当前结点释放锁后,所有Watch该结点的进程都会被通知到,他们成为新的持锁者,如此循环反复。

 

 

分享到:
评论

相关推荐

    ZooKeeper典型应用场景.docx

    ZooKeeper被广泛应用于解决多种分布式问题,以下是一些典型的ZooKeeper应用场景: 1. 数据发布与订阅(配置中心): ZooKeeper作为一个配置中心,允许发布者将数据发布到特定节点,订阅者则可以通过注册Watcher...

    ZooKeeper典型使用场景

    ### ZooKeeper典型使用场景详解 #### 一、概述 ZooKeeper是一款开源的分布式协调服务框架,主要用于解决分布式系统中的数据一致性问题。它基于Paxos算法实现,确保了即使在网络分区的情况下,也能保证分布式环境下...

    ZooKeeper 典型的应用场景详解

    通过上述介绍的几个典型应用场景,可以看出ZooKeeper不仅能够简化分布式系统的设计和实现,还能够提高系统的稳定性和扩展性。对于正在构建或优化分布式应用的企业来说,掌握ZooKeeper的核心概念和技术细节是非常有...

    Zookeeper使用场景及详解

    #### 三、Zookeeper典型应用场景 ##### 1. 数据发布与订阅(配置中心) Zookeeper可以用于发布和订阅配置信息,实现配置信息的集中管理和动态更新。具体应用场景包括: - **全局配置管理**:将全局配置信息存储在...

    第三课:zookeeper 典型使用场景实践1

    在本课程“第三课:Zookeeper典型使用场景实践1”中,主要讨论了Zookeeper在分布式系统中的四个关键应用场景:分布式集群管理、分布式注册中心、分布式JOB和分布式锁。下面是针对这些场景的详细说明: 1. **分布式...

    zookeeper 典型使用场景实践 归档.zip

    通过"第三课:zookeeper 典型使用场景实践.docx"、"第三课:zookeeper 典型使用场景实践.md"、"第三课:zookeeper_典型使用场景实践(预习).pdf"这三份文件,你将能够深入理解Zookeeper在实际项目中的应用方式,...

    zookeeper入门教程

    #### 二、Zookeeper典型应用场景 1. **配置管理**:Zookeeper可以用作中央配置服务器,用于存储和管理分布式系统中的配置信息。当配置发生改变时,可以通过Zookeeper通知所有相关的客户端进行更新。 2. **集群...

    Zookeeper 进阶之——典型应用场景(二)1

    【Zookeeper 进阶之——典型应用场景(二)】 Zookeeper 是一个分布式协调服务,它在分布式系统中扮演着至关重要的角色,提供了诸如命名服务、配置管理、组关系管理和分布式锁等高级功能。本文主要讨论如何利用...

    zookeeper+kafka+storm基本介绍

    #### Zookeeper 典型应用场景 1. **配置管理** 在分布式应用环境中,统一管理配置信息是非常重要的。Zookeeper 可以用来集中存储配置信息,并允许应用程序订阅这些配置的变更通知。当配置发生改变时,所有订阅的...

    zookeeper使用文档V1.0.0.pdf

    Zookeeper典型应用场景包括配置管理、集群管理、命名服务、分布式锁、分布式队列等。例如,Zookeeper可以用来实现一个中心化的配置管理服务,将配置信息存储在Zookeeper中,应用程序可以实时地从Zookeeper中读取配置...

    Zookeeper 进阶之——典型应用场景(一)1

    本文将探讨 Zookeeper 的几个典型应用场景,并通过代码示例进行解析。 **统一命名服务 (Name Service)** 在分布式环境中,Zookeeper 提供了一种层次化的命名空间,类似于文件系统的目录结构。开发者可以通过调用 ...

    ZooKeeper应用场景

    ZooKeeper的应用场景广泛,以下是一些典型的使用案例: 1. 数据发布与订阅(配置中心) ZooKeeper作为一个配置中心,允许发布者将数据发布到ZK节点,订阅者可以动态获取并监听这些数据的变更。例如,应用的全局...

    第三课:zookeeper_典型使用场景实践(预习)1

    在本课程中,我们将重点探讨四个核心应用场景:分布式集群管理、分布式注册中心、分布式锁以及分布式JOB。 一、分布式集群管理 1. 主动查看线上服务节点:通过Zookeeper,可以实时获取集群中各个服务节点的信息,...

    zookeeper应用场景

    除了上述应用场景,ZooKeeper还有其他用途: 4. 分布式锁 在分布式环境中,多个节点可能同时尝试执行某项操作,导致数据不一致。ZooKeeper提供了分布式锁机制,通过创建临时节点和监控父节点来实现锁的获取与释放,...

    KafKa安装使用手册.docx

    ZooKeeper典型应用场景.pdf。。。。。。。。。。。。。。。。。。。。。

    zookeepr资料及代码.7z

    文件名 : ZooInspector.rar 文件夹名: zookeeper 文件名 : zookeeper-3.4.5....文件名 : ZooKeeper典型应用场景.pdf 文件名 : zookeeper文档.pdf 文件名 : zookeeper课上代码.rar 文件名 : zookeepr资料及代码.7z

    1000道 互联网Java工程师面试题 485页 .pdf

    #### ZooKeeper典型应用场景 ZooKeeper的典型应用场景包括配置管理、分布式锁、集群管理和命名服务。 ### Dubbo #### 使用原因和架构设计 Dubbo是一个高性能、轻量级的Java RPC框架。它的整体架构设计包括服务提供...

    java面试题,180多页,绝对良心制作,欢迎点评,涵盖各种知识点,排版优美,阅读舒心

    180多页面试题,前前后后不间断的更新了两年,准备换工作时,总是拿来看看,有比较好的面试题,也不间断的更新,面试题目录如下: ...3. ZooKeeper典型应用场景 183 4、ZooKeeper在大型分布式系统中的应用 189

Global site tag (gtag.js) - Google Analytics