soul 数据同步(三)http 长轮询 同步策略
zookeeper、websocket 数据同步的机制比较简单,而 http 同步会相对复杂一些。Soul 借鉴了 Apollo
、Nacos
的设计思想,取其精华,自己实现了 http
长轮询数据同步功能。
soul-admin 在启动时,会将所有配置加载到 org.dromara.soul.admin.listener.AbstractDataChangedListener.CACHE 里,当用户在 admin 后台界面修改相关配置时,也会更新该 CACHE
soul-bootrap 在启动时,创建线程池执行 org.dromara.soul.sync.data.http.HttpSyncDataService.HttpLongPollingTask 的 run 方法循环调用 ConfigController 的 listener 方法,该方法执行时,会阻塞 60s 再执行,执行时判断 Cache 是否方法变化
,如果有变化,变将变化的 Groupname 返回,网关收到变化的数据后,请求 ConfigController 的 fetchConfigs 方法,从 org.dromara.soul.admin.listener.AbstractDataChangedListener.CACHE 获取变化后的数据,然后更新本地缓存
评论