您的位置:首页 > 其它

【Zookeeper】——功能介绍

2017-05-14 20:00 281 查看
Zookeeper是什么?

         分布式协调服务,为分布式应用提供一致性服务。

应用场景

         数据发布/订阅

                  发布者把数据发布到zk一个或一系列节点,供订阅者订阅到达动态获得数据的目的。

                  数据的发布/订阅有两种模式:推和拉。推就是服务端主动把数据更新发给所有订阅者,拉就是客户端主

         动定时的发请求获取最新数据。

                  Zk将两者结合,客户端订阅自己需要的数据节点,如果对应节点发生数据变更,服务端给客户端发送

         Watcher事件通知,客户端收到消息后主动获取最新数据。

 

         集群管理

                  监控节点的存活状态

                  当前集群中的机器数量

                  集群中机器的运行时状态

                  集群中节点的上下线操作

                  集群节点的统一配置,该项功能一般是结合数据发布/订阅完成的

 

         Master选举

                  Master选举也是对集群的一种管理,集群有多种模式,如:对等模式,就是每台机器都提供服务会通过  

         
nginx之类的工具做负载,还有一种是主备模式的,主节点向外提供服务,备节点实时跟新数据,一旦主节点   

         挂掉了备节点开始新一轮选主。Master选举说的就是这个选举的过程,使用Zookeeper可以协助完成这个过程。

 

         分布式锁

                  控制分布式系统之间同步访问共享资源的一种方式,Zookeeper提供两种锁:独占锁、共享锁。独占锁即 

         一次只能有一个线程使用资源,共享锁是读锁共享,读写互斥,即可以有多线线程同时读同一个资源,如果要

         使用写锁也只能有一个线程使用。Zookeeper可以对分布式锁进行控制。

 

         命名服务

                  命名服务也是分布式系统中比较常见的一类场景。在分布式系统中,通过使用命名服务,客户端应用能够

         根据指定名字来获取资源或服务的地址,提供者等信息。被命名的实体通常可以是集群中的机器,提供的服务

         地址,远程对象等等——这些我们都可以统称他们为名字(Name)。其中较为常见的就是一些分布式服务框

         架中的服务地址列表。通过调用ZK提供的创建节点的API,能够很容易创建一个全局唯一的path,这个path就可

         以作为一个名称。

                  比较常见的应用是Dubbo在zk上注册服务时就是使用zk的统一命名维护全局的服务地址列表。服务提供者

         在启动的时候,向ZK上的指定节点/dubbo/${serviceName}/providers目录下写入自己的URL地址,这个操作就

         完成了服务的发布。服务消费者启动的时候,首先订阅服务提供者指定目录下已注册的URL地址,并向消费者

         指定的节点/dubbo/{serviceName} /consumers目录下写入自己的URL地址。

 

小结

         以上只是Zookeeper功能中比较常用的几个,后面的博客详细的介绍Zookeeper的一些基础概念和以上功能的实现。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: