集群配置
今天测试 SOUL 后台集群部署下同步数据到网关的情况.
后台配置
启动两个后台, 端口分别是 9095
和 9096
server:
# port: 9095
port: 9096
仍使用默认的 websocket 数据同步方式
soul:
sync:
websocket:
enabled: true
网关配置
网关处的 websocket 相关配置需要改动, 我们找到项目启动时的 websocket 配置加载类
@Configuration
@ConditionalOnClass(WebsocketSyncDataService.class)
@ConditionalOnProperty(prefix = "soul.sync.websocket", name = "urls")
public class WebsocketSyncDataConfiguration {
@Bean
@ConfigurationProperties(prefix = "soul.sync.websocket")
public WebsocketConfig websocketConfig() {
return new WebsocketConfig();
}
}
WebsocketConfig 会读取到我们配置的 websocket 相关参数, 进入看看关键的后台集群路径怎么配多个
public class WebsocketConfig {
/**
* if have more soul admin url,please config like this.
* 127.0.0.1:8888,127.0.0.1:8889
*/
private String urls;
}
根据这个注解, 我们得知多个用逗号分隔, 最后网关的配置如下:
soul:
sync:
websocket:
urls: ws://localhost:9095/websocket,ws://localhost:9096/websocket
启动验证
启动后台集群, 接着启动网关, 查看网关打印日志:
2021-02-01 20:11:09.170 INFO 8463 --- [ main] o.d.s.p.s.d.w.WebsocketSyncDataService : websocket connection is successful.....
2021-02-01 20:11:09.609 INFO 8463 --- [ main] o.d.s.p.s.d.w.WebsocketSyncDataService : websocket connection is successful.....
查看后台集群打印日志情况:
2021-02-01 20:11:09.133 INFO 8444 --- [0.0-9095-exec-1] o.d.s.a.l.websocket.WebsocketCollector : websocket on open successful....
2021-02-01 20:11:09.638 INFO 8450 --- [0.0-9096-exec-1] o.d.s.a.l.websocket.WebsocketCollector : websocket on open successful....
操作验证
实验开始前, 我们先找到网关端的 websocket 监听类 SoulWebsocketClient, 在 onMessage()
方法里做一些标记
public final class SoulWebsocketClient extends WebSocketClient {
@Override
public void onMessage(final String result) {
// 标记来源信息的路径
System.out.println("websocket 通信到达, 路径:" + uri.toString());
handleResult(result);
}
}
接着我们在 9095
的后台管理页面, 修改些配置信息, 查看网关情况
在网关端可以看到打印的信息
websocket 通信到达, 路径:ws://localhost:9095/websocket
使用 9096
进行修改配置, 同样看到信息打印
websocket 通信到达, 路径:ws://localhost:9096/websocket
至此验证成功. 一切都显示了后台集群是能做到同步数据给网关端的.
附录
Http 长轮询配置
后台
soul:
http:
enabled: true
网关
soul:
http:
url: http://localhost:9095,http://localhost:9096