首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当您自己调用getChildren时会发生什么?

当您自己调用getChildren时,会触发以下操作:

  1. 首先,getChildren是一个用于获取指定节点的子节点列表的方法。它可以用于访问分布式系统中的数据节点,例如ZooKeeper等。
  2. 在调用getChildren方法时,系统会向指定的节点发送请求,请求获取该节点的子节点列表。
  3. 当请求到达节点后,节点会根据请求的内容进行处理。节点会检查自身是否存在子节点,并将子节点的相关信息返回给调用者。
  4. 调用者收到节点返回的子节点列表后,可以根据需要进行进一步的处理,例如遍历子节点列表、对子节点进行操作等。
  5. 在云计算领域中,getChildren方法常用于分布式系统中的数据管理和协调。通过获取子节点列表,可以实现对分布式数据的访问和操作,进而实现数据的同步、分布式锁、任务调度等功能。

推荐的腾讯云相关产品:腾讯云 ZooKeeper

  • 概念:腾讯云 ZooKeeper 是一种高可用、高性能的分布式协调服务,提供了数据管理和协调功能,可用于构建分布式应用和服务。
  • 分类:分布式协调服务。
  • 优势:提供高可用性和高性能的分布式数据管理和协调功能,支持多种编程语言和平台,易于使用和部署。
  • 应用场景:适用于分布式系统中的数据管理、协调和同步,例如分布式锁、任务调度、配置管理等。
  • 产品介绍链接地址:腾讯云 ZooKeeper
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

分布式服务框架 Zookeeper安装和配置详解单机模式集群模式数据模型如何使用常用接口列表org.apache.zookeeper. ZooKeeper 方法列表基本操作ZooKeeper 典型的应

对目录节点监控状态打开时,一旦目录节点的状态发生变化,Watcher 对象的 process 方法就会被调用。...getChildren(String path, boolean watch) 方法并设置 watch 为 true,由于是 EPHEMERAL 目录节点,创建它的 Server 死去,这个目录节点也随之被删除...,所以 Children 将会变化,这时 getChildren上的 Watch 将会被调用,所以其它 Server 就知道已经有某台 Server 死去了。...Zookeeper 却很容易实现这个功能,实现方式也是需要获得锁的 Server 创建一个 EPHEMERAL_SEQUENTIAL 目录节点,然后调用 getChildren方法获取当前的目录节点列表中最小的目录节点是不是就是自己创建的目录节点...如果正是自己创建的,那么它就获得了这个锁 如果不是那么它就调用 exists(String path, boolean watch) 方法并监控 Zookeeper 上目录节点列表的变化,一直到自己创建的节点是列表中最小编号的目录节点

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

    对目录节点监控状态打开时,一旦目录节点的状态发生变化,Watcher 对象的 process 方法就会被调用。...它们的实现方式都是在 Zookeeper 上创建一个 EPHEMERAL 类型的目录节点,然后每个 Server 在它们创建目录节点的父目录节点上调用 getChildren(String path,...getChildren上的 Watch 将会被调用,所以其它 Server 就知道已经有某台 Server 死去了。...Zookeeper 却很容易实现这个功能,实现方式也是需要获得锁的 Server 创建一个 EPHEMERAL_SEQUENTIAL 目录节点,然后调用 getChildren方法获取当前的目录节点列表中最小的目录节点是不是就是自己创建的目录节点...,如果正是自己创建的,那么它就获得了这个锁,如果不是那么它就调用 exists(String path, boolean watch) 方法并监控 Zookeeper 上目录节点列表的变化,一直到自己创建的节点是列表中最小编号的目录节点

    30620

    分布式服务框架 Zookeeper

    对目录节点监控状态打开时,一旦目录节点的状态发生变化,Watcher 对象的 process 方法就会被调用。...它们的实现方式都是在 Zookeeper 上创建一个 EPHEMERAL 类型的目录节点,然后每个 Server 在它们创建目录节点的父目录节点上调用getChildren(String path, boolean... watch) 方法并设置 watch 为 true,由于是 EPHEMERAL 目录节点,创建它的 Server 死去,这个目录节点也随之被删除,所以 Children 将会变化,这时 getChildren...Zookeeper 却很容易实现这个功能,实现方式也是需要获得锁的 Server 创建一个 EPHEMERAL_SEQUENTIAL 目录节点,然后调用 getChildren方法获取当前的目录节点列表中最小的目录节点是不是就是自己创建的目录节点...,如果正是自己创建的,那么它就获得了这个锁,如果不是那么它就调用 exists(String path, boolean watch) 方法并监控 Zookeeper 上目录节点列表的变化,一直到自己创建的节点是列表中最小编号的目录节点

    1.1K60

    Zookeeper C API学习总结

    这里strings在调用api时会通过malloc分配内存空间,将子节点所有的目录存放在data字段中,需要客户端调用deallocate_String_vector(strings)做释放处理。...Watcher是用于监听节点、session状态的,比如get方法对节点设置了watcher之后,节点的数据发生了改变之后,服务器会主动发送notification给客户端,然后进行watcher的回调...acl:该节点初始 ACL,ACL 不能为null 或空 flags:该参数可以设置为 0,或者创建标识符 ZOO_EPHEMERAL, ZOO_SEQUENCE 的组合或(OR) completion:创建节点请求完成时会调用该函数...watch:如果非 0,则在服务器端设置监视,节点发生变化时客户端会得到通知,即使当前指定的节点不存在也会设置监视,这样该节点被创建时,客户端也可以得到通知 watcher:如果非 0,则在服务器端设置监视...() 设置的全局监视器上下文不同,该函数设置的监视器上下文只与当前的监视器相关联 如果非 0,则在服务器端设置监视,节点发生变化时客户端会得到通知。

    6K51

    分布式利器Zookeeper(二):分布式锁原生API操作ZK Watch机制分布式锁思路

    watch监控的数据发生变化,会通知设置了该监控的client,即watcher。Zookeeper的watch是有自己的一些特性的: 一次性:请牢记,just watch one time!...注意ZK只是通知client节点的数据发生了变化,而不会直接提供具体的数据内容。...getChildren(path,true)和getChildren(path,watcher)有什么区别?前者是沿用上下文中的Watcher,而后者则是可以设置一个新的Watcher的!...1.client调用create()方法创建“/root/lock_”节点,注意节点类型是EPHEMERAL_SEQUENTIAL 2.client调用getChildren("/root/lock...4.如果在步骤3中,发现不是最小的,那么找到比自己小的那个节点,然后对其调用exist()方法注册事件监听 5.之后一旦这个被关注的节点移除,客户端会收到相应的通知,这个时候客户端需要再次调用getChildren

    1.6K30

    ZooKeeper实现分布式队列、分布式锁和选举详解

    ,那么ZooKeeper上的这个临时节点就会被移除 正常执行完业务逻辑后,客户端就会主动将自己创建的临时节点删除 无论在什么情况下移除了lock节点,ZooKeeper都会通知所有在/exclusive_lock...第一个客户端想要获得锁时,需要在ParentLock这个节点下面创建一个临时顺序节点Lock1 之后,Client1查找ParentLock下面所有的临时顺序节点并排序,判断自己所创建的节点Lock1...这恰恰形成了一个等待队列,很像是Java当中ReentrantLock所依赖的AQS 释放锁 释放锁分为两种情况: 1.任务完成,客户端显示释放 任务完成时,Client1会显示调用删除节点Lock1...,具体实现如下: 1)客户端调用create()方法创建一个类似于/shared_lock/[Hostname]-请求类型-序号的临时顺序节点 2)客户端调用getChildren()接口来获取所有已经创建的子节点列表...3)判断是否可以获取共享锁: 读请求:没有比自己序号小的节点或者所有比自己序号小的节点都是读请求 写请求:序号是否最小 4)如果无法获取共享锁,那么就调用exist()来对比自己小的那个节点注册watcher

    29030

    Zookeeper Java API

    连接建立完成后,将会向客户端发送一个事件通知告诉客户端连接建立完成。...服务端创建节点完成后,Zookeeper将会自动调用这个方法 ctx:用于传递一个对象,可以在回调方法执行的时候使用,通常是放一个上下文信息 讲个注意点:临时节点不允许有子节点。...这边讲一个注意点:即使节点的数据没有发生变化,但是如果dataVersion发生了变化,Watcher也会收到通知。...StatCallback cb:注册一个异步回调函数 Object ctx:用于传递上下文的对象 下面我们看一下version这个参数,首先Zookeeper并不会存储多个版本的数据,那么这个version到底有什么用...这个version和JAVA中的CAS理论相似(这里我默认大家都知道什么是CAS),假设一个客户端A基于上次获取的version对数据进行变更,如果在变更过程中有其他客户端对节点数据进行了变更,那么version

    54340

    Zookeeper Watcher机制

    Zookeeper Watcher流程是客户端向服务端的某个节点路径上注册一个watcher,客户端同时会在本地watcherManager中存储特定的watcher,发生节点数据或者节点子节点变化时...服务端在线程 WatchedEvent 事件之后,会调用 getWrapper 方法将自己包装成一个可序列化的 WatcherEvent 事,以便通过网络传输到客户端。...这就是 ZooKeeper 为什么适用于分布式环境的原因,它在网络中传输的是消息,而不是数据包实体。 服务端处理 Watcher 流程 ?...DataTree中节点数据内容或版本发生变化或节点变更时,会调用相应方法去触发 WatchManager 的 triggerWatch 方法,该方法返回 ZNODE 的信息,自此进入到回调本地 process...如果找打了 Watcher 就将其提取出来, //同时会直接从 watchTable 和 watch2Paths 里删除 Watcher,即 Watcher 是一次性的,触发一次就失效了。

    94130

    【面试题】90%面试中被问到的zookeeper面试题

    1、ZooKeeper 提供了什么? 文件系统 通知机制 2、Zookeeper 做了什么?...命名服务 配置管理 集群管理 分布式锁 队列管理 3 、Zookeeper 的配置管理 程序分布式的部署在不同的机器上,将程序的配置信息放在 zk 的 znode 下,有配置发生改变时,也就是 znode...发生变化时,可以通过改变 zk 中某个目录节点的内容,利用 watcher 通知给各个客户端,从而更改配置。...客户端调用 createNode 方法在 locker 下创建临时顺序节点, 然后调用 getChildren(“locker”)来获取 locker 下面的所有子节点,注意此时不用设置任何 Watcher...如果发现自己创建的节点并非 locker 所有子节点中最小的,说明自己还没有获取到锁, 此时客户端需要找到比自己小的那个节点,然后对其调用 exist()方法,同时对其注册事件监听器。

    55220

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

    对目录节点监控状态打开时,一旦目录节点的状态发生变化,Watcher 对象的 process 方法就会被调用。...它们的实现方式都是在 Zookeeper 上创建一个 EPHEMERAL 类型的目录节点,然后每个 Server 在它们创建目录节点的父目录节点上调用getChildren(String path, boolean... watch) 方法并设置 watch 为 true,由于是 EPHEMERAL 目录节点,创建它的 Server 死去,这个目录节点也随之被删除,所以 Children 将会变化,这时 getChildren...Zookeeper 却很容易实现这个功能,实现方式也是需要获得锁的 Server 创建一个 EPHEMERAL_SEQUENTIAL 目录节点,然后调用 getChildren方法获取当前的目录节点列表中最小的目录节点是不是就是自己创建的目录节点...,如果正是自己创建的,那么它就获得了这个锁,如果不是那么它就调用 exists(String path, boolean watch) 方法并监控 Zookeeper 上目录节点列表的变化,一直到自己创建的节点是列表中最小编号的目录节点

    34220

    Zookeeper分布式锁代码实现

    watch监控的数据发生变化,会通知设置了该监控的client,即watcher。Zookeeper的watch是有自己的一些特性的: 一次性:请牢记,just watch one time!...getChildren(path,true)和getChildren(path,watcher)有什么区别?前者是沿用上下文中的Watcher,而后者则是可以设置一个新的Watcher的!...2.client调用getChildren(“/root/lock_”,watch)来获取所有已经创建的子节点,并同时在这个节点上注册子节点变更通知的Watcher 3.客户端获取到所有子节点Path...1.client调用create()方法创建“/root/lock_”节点,注意节点类型是EPHEMERAL_SEQUENTIAL 2.client调用getChildren(“/root/lock_....如果在步骤3中,发现不是最小的,那么找到比自己小的那个节点,然后对其调用exist()方法注册事件监听 5.之后一旦这个被关注的节点移除,客户端会收到相应的通知,这个时候客户端需要再次调用getChildren

    38320

    java开发C语言编译器:把C实现的快速排序算法编译成jvm字节码

    我们看看代码的实现,这次代码与前面代码的一大不同之处就是函数的递归调用。quicksort函数中会调用自己,因此编译器在实现时,需要注意这个特点。...原来我们实现函数的编译时,编译器会解读代码,直到函数第一次被调用时,才会把被调函数编译成字节码,但这里,被调函数在执行时会调用自己,如果对原来的逻辑不加处理,那么编译器会反复的为quicksort函数生成代码...,把当前被调用的函数名记录下来,如果函数体内发送递归调用,那么编译器还会再次进入到 * 这里,如果进入时判断到函数名跟我们这里存储的函数名一致,那表明发生了递归调用。...root.setAttribute(ICodeKey.VALUE, obj); } } break; 编译器解析到代码中发生函数调用时...,它会把被调函数的名字记录下来,然后判断这个名字是否被记录过,如果前面有过记录,那么这次进入表明函数发生了递归调用,于是就不再执行函数对应的执行树,如果函数是第一次被调用,那么就执行函数对应的执行树,在执行过程中就可以把函数编译成字节码

    71520

    Zookeeper - 介绍篇(3)

    这时就用到了之前所述的Zxid,这样就能保证Client不会重连上比自己过时的Server,如图: ?...watch是一个一次性的,客户端watch的数据发生变化时,会通知到客户端。客户端通过注册来接收节点变化的通知。注册接收通知通过Watch 来设置。...Zookeeper支持多种通知,这要看客户端Watch什么样的事件,如 节点数据改变,子节点改变, 节点删除,节点创建等, Zookeeper提供了Watcher对象来调用对应API, 后面会详述该对象...下面是ZK watch我们需要注意的关键概念: (一次性触发)One-time trigger 设置监视的数据发生改变时,该监视事件会被发送到客户端,例如,如果客户端调用了 getData(“/znode1...”, true) 并且稍后 /znode1 节点上的数据发生了改变或者被删除了,客户端将会获取到 /znode1 发生变化的监视事件,而如果 /znode1 再一次发生了变化,除非客户端再次对 /znode1

    58020

    ZooKeeper Java API

    这个对象需要我们自己创建,因为 Watcher 定义为接口,所以需要我们自己实现一个类,然后初始化这个类的实例并传入 ZooKeeper 的构造函数中。...与 ZooKeeper 服务器之间建立或者断开连接时会产生事件。 2.2 Example 下面会创建一个 ZooKeeperConnection 类并实现一个 connect 方法。...一旦客户端与 ZooKeeper 集群连接,Watcher 回调函数会被调用,Watcher 回调调用 CountDownLatch的 countDown 方法释放锁。...ctx: 第三个参数是上下文名称,一个 StringCallback 对象作为多个 create 方法的参数时,这个参数就很有用了。...5.2 Example 在调用 getData 方法前,会先构造一个空的 Stat 类型对象作为参数传给 getData 方法, getData 方法调用返回后,节点的状态信息会被填充到 stat 对象中

    2K20

    Zookeeper:事件监听和通知机制

    观察者模式有一个别名叫“发布-订阅模式”,或者说是“订阅-发布模式”,订阅者和订阅目标是联系在一起的,订阅目标发生改变时,逐个通知订阅者。...我们并不关心对象在异步运行的状态,我们只关心 success 的时候或者 error 的时候我们要做点我们自己的事情就可以了~)。...2、Watcher 特性 数据发生变化的时候, zookeeper 会产生一个 watcher 事件,并且会发送到客户端。但是客户端只会收到一次通知。...getChildren 可以设置子节点变化。...节点数据变化 NodeChildrenChanged // 子节点被创建 删除触发该事件 # 客户端注册流程: 调用 getData()/getChildren()/exist()三个 API,传入

    1.2K30

    zookeeper学习系列:三、利用zookeeper做选举和锁

    什么叫Zoo?“因为要协调的分布式系统是一个动物园”。 ZooKeeper是一个中性化的Service,用于管理配置信息、命名、提供分布式同步,还能组合Service。...为了程序正常运行,更改为 List works = this.getChildren(NODE_NAME, this);   子节点有变动时执行process方法。  ...二、锁  加锁: 1)zk调用create()方法创建一个路径格式为"_locknode_/lock-"的节点,类型为sequence和ephemeral,临时节点且顺序编号 2)在创建的锁节点上调用getChildren...()方法,以获取锁目录下最小编号节点,且不设置watch 3)如果步骤2获得的节点是步骤1创建的节点,那么客户端获得锁,然后退出操作 4)客户端在锁目录上调用exists()方法,设置watch来监视锁目录下序号相对自己小的连续临时节点的状态...5)监视节点状态发生变化,则跳到步骤2,继续后续操作,直到退出锁竞争。

    71640

    分布式协调服务中间件ZooKeeper 入门(1)-ZK的介绍与特性

    什么是分布式系统? 1.由多台计算机组成一个整体 2.计算机之间可以互相通信(rest/rpc) 3.用户的一次请求可能由多台计算机共同计算得出结果 ? ?...8.节点是有序的,我们可以自己添加递增计数给节点。...wathc的,阶段状态发生变化,也就是增删改的时候,zk会向客户端发送一条通知(只会发一次)。...Watch是一次性触发器,监控的对象发生变化,那么就会触发对应的事件,然后这个事件被异步发送到客户端,并且zk也为watch提供了一致性保证。...九、zk的负载均衡 Zk自身的配置管理功能可以实现负载均衡,主要步骤 1.服务的提供者把自己的IP和端口注册到zk中2.服务消费者通过IP和某个端口来进行获取3.提供者宕机的时候,对于的IP就会减少映射了

    2.5K40

    基于 Zookeeper 实现服务注册和服务发现

    服务发现:一个服务需要调用别的服务时,使用静态配置是不可行的,这个时候可以去注册中心获取可用的服务实例并调用。...某个节点(注册中心)发生变化时,Zookeeper 可以通知其他服务实现实时更新。工作原理以下图为例,可以看到 Dubbo 是如何使用 Zookeeper 实现服务注册/发现的。...subServers()则是去 Zookeeper 读取了所有服务提供者的信息,并且监听了节点状态,节点发生创建、删除、更新等事件时重新获取服务者的信息,做到数据实时更新。...服务注册有了注册中心,服务提供者就可以调用 doRegister() 进行注册,代码如下:public class ProviderServer { public static void main...subServers() 发现服务提供者,同时服务提供者发生变化时会通知到消费者。

    20220

    问题解决了,我却不知道原因

    对于服务发现,发现监控的节点发生变化时,重新获取节点下的ip:port端口,然后进行ReLoad(),向RPC调用方提供最新的活跃子服务信息,这样每次都向活跃的节点发生请求。...(path, callback); // 设置回调函数,监控的path路径下的节点有变化时,则调用OnChange prom_handler_ = std::make_shared(prom_config); prom_handler_->Init(default_addr_list); } 在上述代码实现中,对于服务发现来说,监测到的节点发生变化时候,重新获取该节点下所有的子节点信息...(path, callback); // 设置回调函数,监控的path路径下的节点有变化时,则调用OnChange prom_handler_ = std::make_shared<PromHander...也算是给自己一个教训,后面在编译的时候,环境一定要跟线上完全一致,否则,只能自求多福了。 好了,本次的文章就到这,我们下期见!

    38810
    领券