php连接zookeeper错误,php 连接zookeeper实例_weixin_39653361的博客-CSDN博客


本站和网页 https://blog.csdn.net/weixin_39653361/article/details/115592121 的作者无关,不对其内容负责。快照谨为网络故障时之索引,不代表被搜索网站的即时页面。

php连接zookeeper错误,php 连接zookeeper实例_weixin_39653361的博客-CSDN博客
php连接zookeeper错误,php 连接zookeeper实例
weixin_39653361
于 2021-03-11 07:39:16 发布
40
收藏
文章标签:
php连接zookeeper错误
1、安装成功zookeeper后,在zookeeper 的bin目录下有启动相应的启动脚本
启动Server
./zkServer.sh start
启动client:(*注:cli需要安装java)
zkCli.sh
2、PHP实例:
class 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);
leader与worker任务的分配:
class Worker extends Zookeeper {
const CONTAINER = '/cluster' ;
protected $acl = array (
array (
'perms' => Zookeeper:: PERM_ALL ,
'scheme' => 'world' ,
'id' => 'anyone' ) );
private $isLeader = false ;
private $znode ;
public function __construct( $host = '' , $watcher_cb = null , $recv_timeout = 10000 ) {
parent :: __construct( $host, $watcher_cb, $recv_timeout );
public function register() {
if ( ! $this->exists( self :: CONTAINER ) ) {
$this->create( self :: CONTAINER , null , $this-> acl );
$this->znode = $this->create( self ::CONTAINER . '/w-' ,
null ,
$this->acl,
Zookeeper:: EPHEMERAL | Zookeeper::SEQUENCE );
$this-> znode = str_replace( self :: CONTAINER . '/' , '' , $this-> znode );
printf( "I'm registred as: %s\n" , $this-> znode );
$watching = $this->watchPrevious();
if ( $watching == $this-> znode ) {
printf( "Nobody here, I'm the leader\n" );
$this->setLeader( true );
else {
printf( "I'm watching %s\n" , $watching );
public function watchPrevious() {
$workers = $this->getChildren( self :: CONTAINER );
sort( $workers );
$size = sizeof( $workers );
for ( $i = 0 ; $i < $size ; $i++ ) {
if ( $this-> znode == $workers[ $i ] ) {
if ( $i > 0 ) {
$this->get( self :: CONTAINER . '/' . $workers[ $i - 1 ], array ( $this, 'watchNode' ) );
return $workers[ $i - 1 ];
return $workers[ $i ];
throw new Exception( sprintf( "Something went very wrong! I can't find myself: %s/%s" ,
self :: CONTAINER ,
$this-> znode ) );
public function watchNode( $i, $type, $name ) {
$watching = $this->watchPrevious();
if ( $watching == $this-> znode ) {
printf( "I'm the new leader!\n" );
$this->setLeader( true );
else {
printf( "Now I'm watching %s\n" , $watching );
public function isLeader() {
return $this-> isLeader ;
public function setLeader($flag) {
$this-> isLeader = $flag;
public function run() {
$this->register();
while ( true ) {
if ( $this->isLeader() ) {
$this->doLeaderJob();
else {
$this->doWorkerJob();
sleep( 2 );
public function doLeaderJob() {
echo "Leading\n" ;
public function doWorkerJob() {
echo "Working\n" ;
$worker = new Worker( '127.0.0.1:2181' );
$worker->run(); 可以启动3个php进程,查看脚本的运行。
进程1:
[root@localhost zookeeper]# php -f worker.php
I'm registred as: w-0000000010
Nobody here, I'm the leader
Leading
进程2:
[daniel.luo@localhost zookeeper]$ php -f worker.php
I'm registred as: w-0000000011
I'm watching w-0000000010
Working
进程3:
[daniel.luo@localhost zookeeper]$ php -f worker.php
I'm registred as: w-0000000012
I'm watching w-0000000011
Working
ctrl + c 关闭leader进程后,会发现进程2与3会选举出新的leader
本文原创发布php中文网,转载请注明出处,感谢您的尊重!
weixin_39653361
关注
关注
点赞
收藏
评论
php连接zookeeper错误,php 连接zookeeper实例
1、安装成功zookeeper后,在zookeeper 的bin目录下有启动相应的启动脚本启动Server./zkServer.sh start启动client:(*注:cli需要安装java)zkCli.sh2、PHP实例:class ZookeeperDemo extends Zookeeper {public function watcher( $i, $type, $key ) {...
复制链接
扫一扫
PHP+zookeeper实现分布式锁
大道至简,持之以恒!
07-08
441
1、redis分布式锁,其实需要自己不断去尝试获取锁,比较消耗性能;zk分布式锁,获取不到锁,注册个监听器即可,不需要不断主动尝试获取锁,性能开销较小
2、如果是redis获取锁的那个客户端bug了或者挂了,那么只能等待超时时间之后才能释放锁;而zk的话,因为创建的是临时znode,只要客户端挂了,znode就没了,此时就自动释放锁。...
php zookeeper 使用,PHP中zookeeper的类与方法
weixin_31602525的博客
03-19
493
__construct( $host = ‘‘, $watcher_cb = null, $recv_timeout = 10000)$host:zookeeper的ip和端口,多组信息使用,分隔$watcher_cb:全局监听函数,任何的监听都会执行该回调函数$recv_timeout:会话超时,在zookeeper的服务器中可以设置 minSessionTimeout和maxSessionTi...
参与评论
您还未登录,请先
登录
后发表或查看评论
php+zookeeper 集群管理
最新发布
huangweibbk的专栏
11-15
102
本篇主要说下具体zookeeper的一种应用场景:集群管理(图片来自网络)
监听机器的退出加入
上图中所有机器约定在父节点GroupMembers下创建临时节点,然后监听父节点的子节点。一旦有机器挂掉,该机器与zookeeper的连接断开,其所创建的临时节点被删除,所有其他机器都收到通知某个兄弟节点被删除。新机器加入也是类似,所有机器收到通知,有新增临时节点。
在此特别备注下监听父节点下的子节点只能监听到子节点的新增和删除的事件,子节点本身内容变更父节点并不能捕获,如果需要捕获子节点内容变
使用Zookeeper分布式部署PHP应用程序
Daniel's各种笔记
01-21
3556
原文:Distributed application in PHP with Apache Zookeeper
地址:http://systemsarchitect.net/distributed-application-in-php-with-apache-zookeeper/
这篇文章实在不错,实在忍不住翻译下来,希望对大家有用。
Apache Zookeeper是我最近遇到的最酷的技术
php的zookeeper扩展安装及使用
一路向前ylc
08-14
9184
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户。
要在php中使用zookeepe...
php实现zookeeper分布式锁
猛犸象
08-15
1560
php实现zookeeper分布式锁
zookeeper和redis实现分布式锁的对比:
1、redis分布式锁,其实需要自己不断去尝试获取锁,比较消耗性能;zk分布式锁,获取不到锁,注册个监听器即可,不需要不断主动尝试获取锁,性能开销较小
2、如果是redis获取锁的那个客户端bug了或者挂了,那么只能等待超时时间之后才能释放锁;而zk的话,因为创建的是临时znode,只要客户端挂了,znode...
php7.1安装zookeeper-0.7.2扩展的填坑之路 zookeeper版本为3.4.14
凌晨的博客
06-27
641
1configure报错 没有指定zookeeper的文件夹 网上有解决方案 指定下目录即可 3.4 个
./configure --with-php-config=/usr/local/php/bin/php-config --with-libzookeeper-dir=/var/zookeeper-3.4.14/zookeeper-client-c/
这里基本还会有错误configure: error: Can't find zookeeper headers under "/usr/loc.
php zookeeper配置管理应用实践
luzhengfei的专栏
05-04
2462
需求:
在服务迁移中经常会遇到这么一个问题
像mysql配置,memcached配置,redis配置,迁移服务后各种配置信息会改变,在机器数量较多的情况下,一个一个去修改明显是不方便的,如果业务对配置信息较为敏感,则有可能因为配置修改不及时导致服务down掉。
说明来源:http://www.ibm.com/developerworks/cn/opensource/os-cn-zookeep
php7 libzookeeper,PHP和zookeeper结合实践
weixin_39724793的博客
03-09
53
Zookeeper简单介绍Apache Zookeeper是开发和维护开源服务器的服务,它能够实现高度可靠的分布式协调。安装Zookeeper(无需安装)wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.4.10/zookeeper-3.4.10.tar.gztar zxvf zookeeper-3.4.10.tar.gz安装Zo...
Zookeeper入门看这篇就够了
热门推荐
chouya7686的专栏
07-12
1万+
Zookeeper是什么
官方文档上这么解释zookeeper,它是一个分布式服务框架,是Apache Hadoop 的一个子项目,它主要是用来解决分布式应用中经常遇到的一些数据管理问题,如:统一命名服务、状态同步服务、集群管理、分布式应用配置项的管理等。
上面的解释有点抽象,简单来说z...
php7.2安装zookeeper扩展
weixin_33875564的博客
03-26
588
2019独角兽企业重金招聘Python工程师标准>>>
...
zookeeper php注册发现,php+zookeeper 集群管理
weixin_39962125的博客
03-10
135
上一篇提到了php操作zookeeper的一些常用curd操作和需要注意的问题本篇主要说下具体zookeeper的一种应用场景:集群管理(图片来自网络)在此我们主要关注两点监听机器的退出加入上图中所有机器约定在父节点GroupMembers下创建临时节点,然后监听父节点的子节点。一旦有机器挂掉,该机器与zookeeper的连接断开,其所创建的临时节点被删除,所有其他机器都收到通知某个兄弟节点被删除...
PHP扩展安装与使用系列教程(40) --- zookeeper扩展 - 分布式服务
murraycai的博客
06-29
126
zookeeper扩展 - 分布式服务
依赖 zookeeper 服务器
安装Java8
wget https://download.oracle.com/otn/java/jdk/8u291-b10/d7fc238d0cbf4b0dac67be84580cfb4b/jdk-8u291-linux-x64.rpm?AuthParam=1621916310_96f5bfd652e91e058fbf915df69fb665
rpm -ivh jdk-8u291-linux-x64.rpm
export JA
基于PHP和ZooKeeper的简单配置管理实现
wasfaz的博客
10-22
1090
文章目录模块的设计基本架构工作流程PHP核心代码实现代码实现配置测试
模块的设计
基本架构
配置管理模块是很多分布式系统的基础,它的主要功能是将用户更新的配置信息实时的同步到各个节点的服务上,以便它们近似实时的加载这些配置,典型的架构如下图所示
工作流程
服务启动后,ConfigFetcher模块与ZooKeeper服务通讯,读取znode节点/serviceA/conf中保存的配置数据,并向...
PHP安装zookeeper扩展(最新基于zookeeper-3.5.8)
疯狂老司机的博客
05-19
1182
PHP安装zookeeper扩展一、安装依赖(已Centos为例)二、安装Cppunit测试库三、安装zookeeper-client四、安装PHP zookeeper扩展
刚开始尝试pecl install zookeeper,结果发现找不到zookeeper依赖。网上的编译安装都是基于zookeeper-3.4.12.tar.gz,但是现在zookeeper稳定版本已经是apache-zookeeper-3.5.8,最新版本已经到了3.6,找不到旧的安装包了,新版安装方式有点不一样,在此分享出来给有需要
php连接zookeeper错误,php连接zookeeper实例
weixin_31002029的博客
03-11
48
1、安装成功zookeeper后,在zookeeper 的bin目录下有启动相应的启动脚本启动Server./zkServer.sh start启动client:(*注:cli需要安装java)zkCli.sh2、PHP实例:class ZookeeperDemo extends Zookeeper {public function watcher( $i, $type, $key ) {...
php 连接zookeeper实例
Daniel's各种笔记
01-22
3738
1、安装成功zookeeper后,在zookeeper 的bin目录下有启动相应的启动脚本
启动Server
./zkServer.sh start
启动client:(*注:cli需要安装java)
zkCli.sh
2、PHP实例:
class ZookeeperDemo e
zookeeper的安装及php使用zookeeper
天阶的专栏
07-05
2962
zookeeper安装:
1 、下载zookeeper包 案例使用的是3.3.6
2、解压,
tar zxvf zookeeper-3.3.6.tar.gz
3、改配置
mv zookeeper/conf/zoo_sample.cfg zookeeper/conf/zoo.cfg
4、启动
./zookeeper/bin/zkServer.sh start
5、查看是否
“相关推荐”对你有帮助么?
非常没帮助
没帮助
一般
有帮助
非常有帮助
提交
©️2022 CSDN
皮肤主题:游动-白
设计师:我叫白小胖
返回首页
weixin_39653361
CSDN认证博客专家
CSDN认证企业博客
码龄5年
暂无认证
159
原创
周排名
107万+
总排名
15万+
访问
等级
105
积分
18
粉丝
22
获赞
评论
190
收藏
私信
关注
热门文章
c语言中mul的用法,MUL指令(无符号数的乘法指令)
5499
mysql升序和降序语句_从零开始学 MySQL SELECT 语句详解
4486
印象笔记编辑pdf_自学提升自我必备,推荐五款知乎达人都在用的笔记类APP
4346
linux升级python3.7到3.8_在Linux下升级到Python3的两种方法
4112
凭证 金蝶_实操指南/金蝶软件如何凭证打印?调整方法怎样的?
3939
您愿意向朋友推荐“博客详情页”吗?
强烈不推荐
不推荐
一般般
推荐
强烈推荐
提交
最新文章
step如何打开服务器项目,Step7打开项目报错(257:90)
服务器cpu组装超性价比电脑,如何配置组装一台性价比高的电脑?
计算机服务器一般折旧年限,服务器主机折旧年限
2021年165篇
2020年204篇
目录
目录
最新文章
step如何打开服务器项目,Step7打开项目报错(257:90)
服务器cpu组装超性价比电脑,如何配置组装一台性价比高的电脑?
计算机服务器一般折旧年限,服务器主机折旧年限
2021年165篇
2020年204篇
目录
评论
被折叠的 条评论
为什么被折叠?
到【灌水乐园】发言
查看更多评论
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额
抵扣说明:
1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。 2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。
余额充值