任务

zookeeper 同步数据体验下

zookeeper 同步策略

昨天在使用 zookeeper 的同步策略时,在网关打开了 zookeeper 的依赖,而且配置了 zookeeper 的依赖,发现利用 divide 插件测试 http 分发时,请求时显示如下的错误信息。

1
{"code":-106,"message":"Can not find url, please check your configuration!","data":null}

检查 admin 的配置发现,在 soul 的同步策略处没有改好配置,配置改为如下。改完后,重新启动 admin,利用 ZooInspector 查看 zookeeper 的注册情况,此时发现 divide 插件的 selector ,rule 已经注册进去了。

1
2
3
4
5
6
7
8
soul:
sync:
# websocket:
# enabled: true
zookeeper:
url: localhost:2181
sessionTimeout: 5000
connectionTimeout: 2000

image.png

再次发起 http 请求,请求成功:

image.png

此时,将 admin 服务停止,发现网关和 http example 的日志均没有监听到任务输出, zookeeper 也没有任何的改变。此时发起 http 请求,请求仍然可以成功。因此,admin 在这里的作用,是将数据同步到 zookeeper,而不像 websocket 一样,同时还要保证网关与业务服务建立连接

在 admin 中,改变请求的规则,在 /http/test/* 添加规则 /http/test/path/* ,可以发现 zookeeper 监听到了改变,对规则做出了修改。此时请求/http/test/path/666,请求成功。

image.png

1
{"userId":"555","userName":"hello world"}