`

Zookeeper学习(三)——Zookeeper常见的应用场景

 
阅读更多

(1)配置管理

       集中式的配置管理在应用集群中是非常常见的,一般商业公司内部都会实现一套集中的配置管理中心,应对不同的应用集群对于共享各自配置的需求,并且在配置变更时能够通知到集群中的每一个机器。

实现方式:

       将配置信息保存在 Zookeeper 的某个目录节点中,然后将所有需要修改的应用机器监控配置信息的状态,一旦配置信息发生变化,每台应用机器就会收到 Zookeeper 的通知,然后从 Zookeeper 获取新的配置信息应用到系统中。

 

(2)集群管理 

       应用集群中,我们常常需要让每一个机器知道集群中(或依赖的其他某一个集群)哪些机器是活着的,并且在集群机器因为宕机,网络断链等原因能够不在人工介入的情况下迅速通知到每一个机器。

实现方式:

       在Zookeeper 上创建一个 EPHEMERAL 类型的目录节点,然后每个 Server 在它们创建目录节点的父目录节点上调用 getChildren(String path, boolean watch) 方法并设置 watch 为 true,由于是 EPHEMERAL 目录节点,当创建它的 Server 死去,这个目录节点也随之被删除,所以 Children 将会变化,这时 getChildren上的 Watch 将会被调用,所以其它 Server 就知道已经有某台 Server 死去了。新增 Server 也是同样的原理。

 

(3)共享锁(Locks)

       实现方式也是需要获得锁的 Server 创建一个 EPHEMERAL_SEQUENTIAL 目录节点,然后调用 getChildren方法获取当前的目录节点列表中最小的目录节点是不是就是自己创建的目录节点,如果正是自己创建的,那么它就获得了这个锁,如果不是那么它就调用 exists(String path, boolean watch) 方法并监控 Zookeeper 上目录节点列表的变化,一直到自己创建的节点是列表中最小编号的目录节点,从而获得锁,释放锁很简单,只要删除前面它自己所创建的目录节点就行了。

void getLock() throws KeeperException, InterruptedException{ 
        List<String> list = zk.getChildren(root, false); 
        String[] nodes = list.toArray(new String[list.size()]); 
        Arrays.sort(nodes); 
        if(myZnode.equals(root+"/"+nodes[0])){ 
            doAction(); 
        } 
        else{ 
            waitForLock(nodes[0]); 
        } 
    } 
    void waitForLock(String lower) throws InterruptedException, KeeperException {
        Stat stat = zk.exists(root + "/" + lower,true); 
        if(stat != null){ 
            mutex.wait(); 
        } 
        else{ 
            getLock(); 
        } 
    }

 

 

分享到:
评论

相关推荐

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

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

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

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

    Zookeeper学习中的疑难问题总结,很受用!

    #### 三、Zookeeper 应用场景 1. **命名服务** - 使用 Zookeeper 创建一个全局唯一的路径作为名字,指向集群中的服务地址或远程对象等。这种机制确保了在分布式环境中资源和服务的唯一性和可寻址性。 2. **配置...

    大数据技术基础实验报告-Zookeeper的安装配置和应用实践.doc

    **大数据技术基础实验报告——Zookeeper的安装配置与应用实践** Apache ZooKeeper 是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步...

    java面试——zookeeper面试专题.zip

    《Java面试——Zookeeper面试专题》 Zookeeper是Apache Hadoop项目下的一个分布式协调服务,它为分布式应用程序提供了高效且可靠的分布式同步、配置管理以及命名服务。在Java面试中,Zookeeper是一个重要的考察点,...

    zookeeper-3.4.11安装包

    在本场景中,我们讨论的是ZooKeeper的3.4.11稳定版本的安装包,它既支持Windows操作系统,也适用于Linux环境中的CentOS发行版。 **ZooKeeper的主要功能和应用:** 1. **命名服务**:为分布式应用提供全局唯一的名字...

    zookeeper-release-3.5.4.7z

    《Zookeeper源码解析——基于3.5.4版本》 Apache ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它是集群的管理者,监视着集群中各个节点的状态根据节点提交的反馈进行下一步合理操作。最终将简单...

    zookeeper-3.4.12.tar.gz.zip

    三、Zookeeper的应用场景 1. **配置管理**:集中存储和管理分布式系统的配置,保证所有节点的配置一致。 2. **命名服务**:为分布式服务提供全局唯一的名字注册和查找。 3. **分布式锁**:实现分布式环境下的互斥...

    zookeeper_demo maven项目:包含原生API、zkclient、Curator操作

    分布式锁是Zookeeper在分布式协调中的常见应用场景。在`zookeeper_demo`中,我们可以看到如何利用Zookeeper的临时顺序节点实现分布式锁。通过创建、删除节点,以及监听节点变化,可以实现线程安全的锁机制,从而...

    从Paxos到Zookeeper

    第三部分(第5~6章)介绍了ZooKeeper的使用方法,包括客户端API的使用以及对ZooKeeper服务的部署与运行,并结合真实的分布式应用场景,总结了ZooKeeper使用的最佳实践;第四部分(第7章)对ZooKeeper的架构设计和...

    分布式设计与开发(一)------zookeeper实现实例

    由于提供的链接无法直接访问,无法详细解读具体的文章内容,但上述内容涵盖了Zookeeper的基础知识和常见应用场景。在实际学习过程中,结合具体的代码示例和实际操作,将有助于更深入地理解Zookeeper的工作原理和使用...

    zookeeper实战:ConfigServer代码样例

    在分布式系统中,Zookeeper作为一个高可用的分布式协调服务,被广泛应用于配置管理、命名服务、分布式锁等场景。本篇文章将聚焦于Zookeeper的一个典型应用——ConfigServer,通过分析具体的代码样例,深入理解其工作...

    zookeeper-3.4.11.tar.gz

    在本场景中,我们讨论的是ZooKeeper的3.4.11版本的Linux安装文件——"zookeeper-3.4.11.tar.gz"。 ZooKeeper的主要功能包括命名服务、配置管理、集群同步、分布式锁和组服务等。这些功能使得它成为分布式系统中的...

    Hadoop快速入门——第四章、zookeeper安装包

    Zookeeper是一个开源的分布式协调服务,它为分布式应用提供了高可用性、一致性以及同步服务。而Hadoop则是大数据处理的核心框架,以分布式存储和计算闻名。 Zookeeper的主要功能包括命名服务、配置管理、集群管理、...

    从Paxos到Zookeeper分布式一致性原理与实践包括源码

    《从Paxos到Zookeeper:分布式一致性原理与实践》这本书深入浅出地探讨了分布式系统中的一个重要概念——一致性,以及如何在实际操作中通过Paxos算法和Zookeeper实现这一概念。分布式一致性是分布式系统设计的核心,...

    apache-zookeeper-3.6.2-bin

    - ZooKeeper广泛应用于分布式数据库、分布式计算框架Hadoop、消息中间件Kafka、分布式锁、服务发现等场景。 理解并熟练掌握这些知识点,将有助于你在实际项目中有效地使用和管理Apache ZooKeeper 3.6.2。通过深入...

    Zookeeper环境搭建

    ### Zookeeper环境搭建与应用场景详解 #### 一、Zookeeper简介及重要性 **Zookeeper**作为Hadoop生态系统中的一个重要组成部分,主要负责管理和协调分布式应用程序中的各种组件和服务。它的核心功能在于提供一种...

    使用ZooKeeper实现分布式锁

    在分布式锁的场景中,ZooKeeper的核心特性——原子性操作和强一致性发挥了关键作用。 首先,我们创建一个ZNode(ZooKeeper中的节点)作为分布式锁的资源,每个需要获取锁的客户端都会尝试创建一个临时顺序节点。...

    Paxos到Zookeeper:分布式一致性原理与实践

    第三部分(第5~6章)介绍了ZooKeeper的使用方法,包括客户端API的使用以及对ZooKeeper服务的部署与运行,并结合真实的分布式应用场景,总结了ZooKeeper使用的最佳实践;第四部分(第7章)对ZooKeeper的架构设计和...

Global site tag (gtag.js) - Google Analytics