Zookper是一种分布式的,开源的,应用于分布式应用的协作服务。它提供了一些简单的操作,使得分布式应用可以基于这些接口实现诸如同步、配置维护和分集群或者命名的服务。Zookper很容易编程接入,它使用了一个和文件树结构相似的数据模型。
虽然ZooKeeper是一个Java应用程序,但C也可以使用。这里就有个PHP的扩展,你可以从PECL中下载,或从GitHub中直接获取PHP-ZooKeeper。
要使用该扩展你首先要安装ZooKeeper。可以从官方网站下载。
$ tar zxfv zookeeper-3.4.5.tar.gz$ cd zookeeper-3.4.5/src/c$ ./configure --prefix=/usr/$ make$ sudo make install
这样就会安装ZooKeeper的库和头文件。现在准备编译PHP扩展。
$ git clone https://github.com/andreiz/php-zookeeper.git$ cd php-zookeeper$ phpize$ ./configure$ make$ sudo make install
将“zookeeper.so”添加到PHP配置中。
$ vim /etc/php5/cli/conf.d/20-zookeeper.ini
因为我不需要运行在web服务环境下,所以这里我只编辑了CLI的配置。将下面的行复制到ini文件中。
extension=zookeeper.so
使用如下命令来确定扩展是否已起作用。
$ php -m | grep zookeeperzookeeper
现在是时候运行ZooKeeper了。目前唯一还没有做的是配置。创建一个用于存放所有service数据的目录。
$ mkdir /home/you-account/zoo$ cd$ cd zookeeper-3.4.5/$ cp conf/zoo_sample.cfg conf/zoo.cfg$ vim conf/zoo.cfg
找到名为“dataDir”的属性,将其指向“/home/you-account/zoo”目录。
$ bin/zkServer.sh start$ bin/zkCli.sh -server 127.0.0.1:2181[zk: 127.0.0.1:2181(CONNECTED) 14] create /test 1Created /test[zk: 127.0.0.1:2181(CONNECTED) 19] ls /[test, zookeeper]
此时,你已成功连到了ZooKeeper,并创建了一个名为“/test”的znode(稍后我们会用到)。ZooKeeper以树形结构保存数据。这很类似于文件系统,但“文件夹”(译者注:这里指非最底层的节点)又和文件很像。znode是ZooKeeper保存的实体。Node(节点)的说法很容易被混淆,所以为了避免混淆这里使用了znode。
因为我们稍后还会使用,所以这里我们让客户端保持连接状态。开启一个新窗口,并创建一个zookeeperdemo1.php文件。
<?phpclass ZookeeperDemo extends Zookeeper { public function watcher( $i, $type, $key ) { echo "Insider Watcher/n"; // Watcher gets consumed so we need to set a new one $this->get( '/test', array($this, 'watcher' ) ); }}$zoo = new ZookeeperDemo('127.0.0.1:2181');$zoo->get( '/test', array($zoo, 'watcher' ) );while( true ) { echo '.'; sleep(2);}
现在运行该脚本。
$ php zookeeperdemo1.php
新闻热点
疑难解答