Zookeeper

解决 php-Zookeeper Connection Loss

2021-05-16  本文已影响0人  泡水鱼干

问题:使用zookeeper集群时候,当其中一台主机停止服务,再次请求过程中会不定期出现 Connection Loss 问题
原因:php- zookeeper 资源没有获得链接,就调用相关操作(比如create 等)

解决办法:通过链接状态进行判断,当链接建立之后再进行操作

链接状态:

Zookeeper::EXPIRED_SESSION_STATE; //-112
Zookeeper::AUTH_FAILED_STATE; // -113
Zookeeper::CONNECTING_STATE; //1
Zookeeper::ASSOCIATING_STATE; //2
Zookeeper::CONNECTED_STATE; //3
Zookeeper::READONLY_STATE; // 在php-zookeeper 0.7.2中没有该状态
Zookeeper::NOTCONNECTED_STATE; //999

使用:

$path = "/learn";
$zk = new \Zookeeper('192.168.3.111:2181,192.168.3.112:2181,192.168.3.113:2181');
// 注意:此处只为演示,实际使用应加入其他控制条件,比如2秒内链接不上就需要break,同时抛出异常
while (true) {
    $status = $zk->getState();
    if ($status == \Zookeeper::CONNECTED_STATE) {
        break;
    }
}

try {
    if (!$zk->exists($path)) {
        // TODU
    }
    echo $zk->get($path);
} catch (\Exception $e) {
    // TODU
}
上一篇下一篇

猜你喜欢

热点阅读