ZooKeeper是什么

来源:互联网 发布:中美合作 规范网络 编辑:程序博客网 时间:2024/05/01 09:43

ZooKeeper是分布式应用中的一种框架。

ZooKeeper能干什么哪?我总结了一句话,就是:ZooKeeper是用来保证数据在集群间的事务性一致。

我们细细品一下这句话,可以获得以下认识:

  • ZK是集群部署的;
  • 集群之间是传递数据的;
  • 集群之间传递的数据必须保证在各个节点之间的事务性一致;

这是我们获得的认识。

下面谈一谈,ZK到底是怎么一回事?

简单地讲,ZK是一个文件系统,类似于linux的文件,有根路径“/”,根目录下各级子目录,可以有一级一级的子目录。在ZK中,目录被称作“节点”。与linux不同的是,ZK的节点是可以存放数据的。也就是说,ZK中保存的数据是存放在节点中的。

既然节点是一级级的。那么,必然有父节点,有子节点。谈这个话题有什么用?继续向下看。

在ZK中,还有一个很重要的特性,就是事件的监听机制

当我们想在ZK中建立节点、删除节点、修改节点值等时候,都会产生事件,注册了事件监听器的类,就可以获得这些事件。换句话说,只要ZK的节点变化了,那么数据肯定变化,那么注册器通过监控节点的变化就可以知道数据的变化。那么而这正是ZK的无比强大之处。

总结一下,ZK中数据的通知机制是通过对节点变化的监听机制实现的

 

下面,看一下ZK的应用场景吧!

  • 统一命名服务

举例子,公司有很多业务系统,这些业务系统都需要某种单据号,那么这个单据号肯定在所有系统中都是唯一的,在不指定哪个系统产生该单据号的情况下,可以使用ZK做这件事情。ZK可以保证原子性,不会因为多个系统的争抢造成不一致。

  • 统一配置管理

比如,公司的一套产品部署了N多的客户,你现在要对配置文件升级,那么你不会挨家挨户的去修改,那真是累死人的。我们可以在ZK中设定一个更新地址,让所有的产品都从这个地址下载。当需要升级的时候,可以修改该节点的值。每次升级,改一次值。这样,所有客户那边就可以自动升级了,不必我们跑来跑去了。

  • 集群中管理

对于运维工作而言,集群的管理非常重要,有服务器down掉那是非常要紧的事情,必须第一时间知道。那么,服务器down有可能是断电,网络中断等各种原因。服务器 一旦down掉,它是没有办法向外界发送求救信号的。怎么办?当服务器启动时,在ZK集群建立一个连接,如果服务器down掉,那么连接就中断了,那么ZK那么就知道有服务器down掉了,这时候ZK就可以对外发送求救信号了。

  • 独占锁实现

在多系统架构中,有些资源是独占的,也就是说同一时刻只能有一个系统在用。如果是虚拟机内部,可以通过synchronized关键字实现,但是系统之间就无能为力了。可以这样做:当系统占用资源时,去ZK创建一个指定节点;如果其他系统想要占用资源,也要去创建相同的节点,但是发现已经被创建了,那么就不能再次创建,只能等待。这就实现了独占锁机制了。

 

ZK的特性还有很多,需要我们把这些特性应用到具体的工作中。

有的同学想:为什么原来没有这样的东西啊?因为ZK是分布式系统,在单机下是用不上这套东西的。只有到了分布式环境下,才有ZK的用武之地!

先说这些吧 微笑

0 0
原创粉丝点击