任务
启动admin,与网关。 admin操作,使用zookeeper同步数据到网关
zookeeper 同步
打开 zookeeper 同步策略,启动 admin。
引入 zookeeper 的依赖,配置 zookeeper 的信息,启动网关。启动后可以看到同步日志:zookeeper state changed (SyncConnected)。
1 2 3 4 5 6
| <!--soul data sync start use zookeeper--> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-sync-data-zookeeper</artifactId> <version>${project.version}</version> </dependency>
|
1 2 3 4 5 6
| soul: sync: zookeeper: url: localhost:2181 sessionTimeout: 5000 connectionTimeout: 2000
|
启动 http-example 工程,发起请求,发现 http 请求失败。但是,切换回 websocket 同步之后,接口访问又是正常的。
1
| {"code":-106,"message":"Can not find url, please check your configuration!","data":null}
|
没有太多头绪,就看下 soul-sync-data-zookeeper 工程,看下 zookeeper 的数据同步逻辑。主要逻辑是依赖 zookeeper 的 watch 机制。
1 2 3 4 5 6 7 8 9 10
| public ZookeeperSyncDataService(final ZkClient zkClient, final PluginDataSubscriber pluginDataSubscriber, final List<MetaDataSubscriber> metaDataSubscribers, final List<AuthDataSubscriber> authDataSubscribers) { this.zkClient = zkClient; this.pluginDataSubscriber = pluginDataSubscriber; this.metaDataSubscribers = metaDataSubscribers; this.authDataSubscribers = authDataSubscribers; watcherData(); watchAppAuth(); watchMetaData(); }
|
太困了…明晚补充总结
Link
Author:
Eazon Shaw
Permalink:
http://eazon.xyz/2021/01/22/soul06/
License:
Copyright (c) 2019 CC-BY-NC-4.0 LICENSE
Solgan:
Do you believe in DESTINY?