Soul网关-day14
后台与网关数据同步(一)
当用户业接入到soul网关的时候,主要是通过9095,即soul-admin进行接口的注册;这样就存在一个疑惑:我们的网关是如何感知到注册到soul-admin上的接口信息呢?
以前分析过soul-bootstrap(即soul网关)的yaml配置文件;我们在其中发现了这么一个东西:
soul:
sync:
websocket :
urls: ws://localhost:9095/websocket
可以看到这条sync属性下配置的url访问的地址就是我们的soul-admin,前面的ws://则代表着soul网关是通过websocket进行数据的同步的。
其实在soul-bootstrap启动过程中的控制台可以看到,网关是在不停的向admin的端口进行websocket的请求,以前不知道是在干什么,现在想来应该是在soul网关启动之初就在向soul网关进行数据的同步请求。
那么如何建立websocket连接的呢?通过全项目查找关键词:Websocket+sync,第一个冒出来的是:WebsocketSyncDataService,而看名字大概可以猜到这个还不是最终的入口,我们可以顺着这个类找到调用了WebsocketSyncDataService的类:WebsocketSyncDataConfiguration,而在这个类的类头上可以看到一列亲切的注解:
@Configuration
@ConditionalOnClass(WebsocketSyncDataService.class)
@ConditionalOnProperty(prefix = "soul.sync.websocket", name = "urls")
public class WebsocketSyncDataConfiguration {
也就是说在这里我们就初步的找到了组织,那么soul网关具体是如何做的呢?我们又如何通过websocket类比到其他的数据同步中去呢?
明天再来分析…刚入职,大小周…要忙的东西好多。