Zookeeper的应用场景

1.统一的命名服务

国产的RPC框架Dubbo,使用ZooKeeper作为服务的注册中心。首先服务提供者在启动时会启动一个Server,并且会将服务的信息以临时节点的形式注册到ZooKeeper中,一旦服务提供者出现意外,它注册临时节点会自动删除。服务消费者在初始化是会自动在指定的ZNode注册子节点数量改变的监视器,一旦发现子节点数量发生改变,即触发通知。使用最新的调用地址列表替换历史的调用地址列表。结论:Apache Dubbo框架引入注册中心的原因就是为了保证服务消费者能够自动感知服务提供方信息的改变

Zookeeper的应用场景_第1张图片

2.分布式配置中心

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

Zookeeper的应用场景_第2张图片

3.集群选举、

利用ZooKeeper有两个特性,就可以实时另一种集群机器器存活性监控系统:
1.客户端在节点 x 上注册一个Watcher,那么如果 x?的子节点变化了,会通知该客户端。
2.创建EPHEMERAL类型的节点,一旦客户端和服务器的会话结束或过期,那么该节点就会消失

Zookeeper的应用场景_第3张图片

4.分布式锁

分布式锁主要是为了解决在分布式系统中对临界资源处理的线程安全问题。

Zookeeper的应用场景_第4张图片

Zookeeper的应用场景_第5张图片
需要获得锁的Server创建一个EPHEMRAL_SEQUENTIAL(临时顺序节点),然后调用getChildren方法,获取当前的目录节点列表中最小的目录节点是不是就是自己创建的目录节点,如果是自己创建的,那么它就获得了这个锁,如果不是就调用exists(String path,boolean watch)方法监控Zookeeper上目录节点的变动,一直到自己创建的节点是列表中最小编号的目录节点,从而获得锁,释放锁很简单,只要删除前面它自己所创建的目录节点就行了。

你可能感兴趣的:(大数据成神之路)