Zookeeper集群典型分布式应用场景
Posted handwrit2000
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Zookeeper集群典型分布式应用场景相关的知识,希望对你有一定的参考价值。
1.配置管理——需求是数据一致性
ZooKeeper 采用的是推拉相结合的方式:客户端向服务端注册自己需要关注的节点,一旦该节点的数据发生变更,那么服务端就会向相应的客户端发送Watcher事件通知,客户端接收到这个消息通知之后,需要主动到服务端获取最新的数据。
2.命名服务
服务需要被访问,如服务提供的uri,但是uri是易变的,所以需要给变化的uri取一个固定的名字,每次通过这个名字来获取服务的uri。
Zookeeper让服务可以创建一个节点,节点名为服务名,数据为uri,通过这种方式来完成命名。
3.负载均衡
1)负载注册/更新——负载ip:port可以保存到zookeeper的临时节点数据中,并具有一致性
2)负载健康检查——对于下线的负载,由于其创建的临时节点自动删除,ip:port数据也会一并删除
3)负载分派——获取负载节点下的所有临时节点,使用负载均衡算法选取一个负载
4.master选举
客户端集群每天都会定时往ZooKeeper. 上创建- - 个临时节点,例如/master_ election/
2013-09- 20/binding。在这个过程中,只有一个客户端能够成功创建这个节点,那么这个;
客户端所在的机器就成为了Master.同时,其他没有在ZooKeeper.上成功创建节点的客
户端,都会在节点/master_ election/2013-09-20. 上注册一个子节点变更的Watcher, 用于
监控当前的Master机器是否存活,一旦发现当前的Master挂了,那么其余的客户端将
会重新进行Master选举。
5.分布式锁
在需要获取排他锁时,所有的客户端都会试图通过调用create()接口, 在
/exclusive_ lock 节点下创建临时子节点/exclusive_ lock/lock. 在前面几节中我们也介绍了,
ZooKeeper会保证在所有的客户端中,最终只有一个客户端能够创建成功,那么就可以
认为该客户端获取了锁。同时,所有没有获取到锁的客户端就需要到/exclusive_lock节
点上注册一一个子节点变更的Watcher监听,以便实时监听到lock节点的变更情况。
以上是关于Zookeeper集群典型分布式应用场景的主要内容,如果未能解决你的问题,请参考以下文章