持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第27天,点击查看活动详情
Zookeeperd的使用场景简单介绍一
-
配置中心(发布/订阅模式)
- 配置的发布更改发布到zookeeper的节点上,订阅者从订阅的节点感知节点数据的变化读取最新的配置数据,发布订阅机制实现订阅者动态的获取最新的数据的,实现了动态的修改配置的功能;
- 一般的发布订阅模式为,当配置发布者修改了服务端节点数据之后,服务端主动将更新的数据情况通知到订阅者,这种称之为push动作,而订阅者则对应的是pull动作,客户端主动拉取订阅的节点数据;客户端向服务端注册自己需要监听的节点,一旦节点数据发生变动,服务端向监听对应节点的客户端发送watcher事件,客户端随机取拉取最新的节点数据;
-
命名服务
- 利用zookeeper的树形节点结构维护一套集群中机器几点名称,远程调用服务名称,为分布式系统中的资源命名;
- 例如可以用来作为微服务系统中远程API的命名以及url,Dubbo就是应用了这一能力,使用zookeeper维护全局服务的api接口地址列表,服务端在启动的时候,向zookeeper上指定的节点写入自己服务提供的远程api;
- 消费端启动时订阅这一节点,从而获得该节点下的api地址;
-
分布式id生成器
- 在ZooKeeper中,每⼀个数据节点都能够维护⼀份⼦节点的顺序顺列,当客户端对其创建⼀个顺序⼦节 点的时候 ZooKeeper 会⾃动以后缀的形式在其⼦节点上添加⼀个序号,在这个场景中就是利⽤了 ZooKeeper的这个特性 ;
- 相对于uuid的分布式id而言,这种方式对于id的含义更加明确;
-
分布式锁和分布式队列
-
分布式日志收集系统
-
zookeeper对客户端监听临时节点的机制:
客户端对数据节点进行watcher监听,当该被监听节点发生数据变化时,服务端推送相应的变更通知到客户端;
对于zokeeper上的临时节点其生命周期是session的,当客户端跟服务端失联超过一定时间,服务端认为客户端挂掉了,与此同时相对应的临时节点也会被删除;
-
因此当利用zookeeper设计分布式日志文件系统时,首要考虑的情况是产生日志的及其跟收集日志的机器的关联问题;
-