Gitlib Gitlib
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)

Ravior

以梦为马,莫负韶华
首页
  • 分类
  • 标签
  • 归档
  • Golang开发实践万字总结
  • MySQL核心知识汇总
  • Redis实践总结
  • MQ实践万字总结
  • Docker数据持久化总结
  • Docker网络模式深度解读
  • 常用游戏反外挂技术总结
  • 读书笔记
  • 心情杂货
  • 行业杂谈
  • 友情链接
关于我
GitHub (opens new window)
  • PHP

    • PHP-FPM使用指南
    • PHP7新特性总结
    • PHP安全编程
    • PHP安全配置总结
    • PHP变量的值类型和引用类型
    • PHP标准规范PSR
    • PHP操作Zookeeper实践
      • 1. Zookeeper安装
        • 1.1 源码编译
      • 2. Zookeeper类信息
        • 2.1 客户端操作
    • PHP错误和异常处理机制详解
    • PHP的Session运行机制
    • PHP底层运行机制和原理
    • PHP反射模拟实现注解路由
    • PHP高级用法总结
    • PHP开发常用文档总结
    • PHP开发入门:Memcached扩展安装
    • PHP开发入门:PHP7安装部署
    • PHP开发入门:Redis扩展安装
    • PHP开发SPL总结
    • PHP框架常见URL模式
    • PHP扩展开发入门
    • PHP垃圾回收机制
    • PHP类的自动加载
    • PHP输入输出流
    • PHP微服务开发指南
    • PHP协程
    • PHP写时拷贝技术
    • PHP性能优化之Opcache
    • PHP依赖注入和控制反转
    • PHP运行模式(SAPI)
    • PHP中file_get_contents与curl区别
    • RPC的简单实现
    • Protobuf:高效数据结构化工具
    • P3P协议详解
    • Laravel之集合(Collection)总结
    • Laravel实践总结
    • Laravel之ORM总结
    • 中高级PHP实践总结
    • PHP Socket编程实战
  • Golang

  • Python

  • Javascript

  • 其他语言

  • 编程语言
  • PHP
Ravior
2017-12-09
目录

PHP操作Zookeeper实践

# 1. Zookeeper安装

# 1.1 源码编译

  • 下载安装包
wget https://mirrors.tuna.tsinghua.edu.cn/apache/zookeeper/zookeeper-3.4.14/zookeeper-3.4.14.tar.gz --no-check-certificate
1
  • 解压

zookeeper的安装包无需变异,解压即可使用:

tar zxvf zookeeper-3.4.14.tar.gz

1
2

为了方便快速测试,我们采用docker来安装zookeeper, 命令如下:

docker run -d -p 2181:2181 -v /data/:/data/ --name=zookeeper zookeeper
1

# 2. Zookeeper类信息

Zookeeper — Zookeeper类

  -- Zookeeper::addAuth — 指定应用程序凭据

  -- Zookeeper::connect — 创建与Zookeeper沟通的句柄

  -- Zookeeper::__construct — 创建与Zookeeper沟通的句柄

  -- Zookeeper::create — 同步创建节点

  -- Zookeeper::delete — 同步删除Zookeeper中的一个节点

  -- Zookeeper::exists — 同步检查Zookeeper节点的存在性

  -- Zookeeper::get — 同步获取与节点关联的数据。

  -- Zookeeper::getAcl — 同步地获取与节点关联的ACL。

  -- Zookeeper::getChildren — 同步列出节点的子节点

  -- Zookeeper::getClientId — 返回客户端会话ID,仅在连接当前连接时才有效(即最后观察者状态为ZooOnCeleDelphi状态)

  -- Zookeeper::getRecvTimeout — 返回此会话的超时,如果连接当前连接(只有上次观察者状态为ZooOnCeleTytStand状态)才有效。此值可能在服务器重新连接后发生更改。

  -- Zookeeper::getState — 获取Zookeeper连接的状态

  -- Zookeeper::isRecoverable — 检查当前的Zookeeper连接状态是否可以恢复

  -- Zookeeper::set — 设置与节点关联的数据

  -- Zookeeper::setAcl — 同步设置与节点关联的ACL

  -- Zookeeper::setDebugLevel — 设置库的调试级别

  -- Zookeeper::setDeterministicConnOrder — 启用/禁用仲裁端点顺序随机化

  -- Zookeeper::setLogStream — 设置库用于日志记录的流

  -- Zookeeper::setWatcher — 设置观察函数
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39

# 2.1 客户端操作

获取节点信息(Zookeeper::get):

$zk = new Zookeeper('127.0.0.1:2181');

if ($zk->exists('/tmp')) {
	echo $zk->get('/tmp');
} else {
	echo '节点不存在';
}

$zk->close();
1
2
3
4
5
6
7
8
9

获取节点信息(Zookeeper::get)并设置watcher:

$zk = new Zookeeper('127.0.0.1:2181');

$watch = function($type, $state, $key) {
	echo '节点发生改变';
};


if ($zk->exists('/tmp')) {
	echo $zk->get('/tmp', $watch);
} else {
	echo '节点不存在';
}

while(true) {
	echo '.';
	sleep(1);
}

$zk->close();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19

创建子节点(Zookeeper::create):

$zk = new Zookeeper('127.0.0.1:2181');
$zk->create('/tmp',1);
$zk->close();
1
2
3

创建临时/顺序节点:

$params = [
	[
		'perms' => Zookeeper::PERM_ALL,
		'scheme' => 'world',
		'id' => 'anyone'
	]
];

$zk = new Zookeeper('127.0.0.1:2181');

// 临时节点
$zk->create('/tmp',1, $params, Zookeeper::EPHEMERAL);

// 顺序节点
// $zk->create('/tmp',1, $params, Zookeeper::SEQUENCE);

// 临时顺序
$zk->create('/tmp',1, $params, Zookeeper::EPHEMERAL|Zookeeper::SEQUENCE);
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

Watcher通知状态与事件类型一览:

  • ZOO_CREATED_EVENT(value=1):节点创建事件,需要watch一个不存在的节点,当节点被创建时触发,此watch通过zoo_exists()设置
  • ZOO_DELETED_EVENT(value=2):节点删除事件,此watch通过zoo_exists()或zoo_get()设置
  • ZOO_CHANGED_EVENT(value=3):节点数据改变事件,此watch通过zoo_exists()或zoo_get()设置
  • ZOO_CHILD_EVENT(value=4):子节点列表改变事件,此watch通过zoo_get_children()或zoo_get_children2()设置
  • ZOO_SESSION_EVENT(value=-1):会话事件,客户端与服务端断开或重连时触发
  • ZOO_NOTWATCHING_EVENT(value=-2):watch移除事件,服务端出于某些原因不再为客户端watch节点时触发
#PHP#Zookeeper
上次更新: 2022/12/02, 22:04:34
PHP标准规范PSR
PHP错误和异常处理机制详解

← PHP标准规范PSR PHP错误和异常处理机制详解→

最近更新
01
常用游戏反外挂技术总结
11-27
02
Golang开发实践万字总结
11-11
03
Redis万字总结
10-30
更多文章>
Theme by Vdoing | Copyright © 2011-2022 Ravior | 粤ICP备17060229号-3 | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式